提交 044a13d0 编写于 作者: F fengjiayi

expose GradOpMaker to Python

上级 e11a561c
...@@ -282,15 +282,22 @@ All parameter, weight, gradient are variables in Paddle. ...@@ -282,15 +282,22 @@ All parameter, weight, gradient are variables in Paddle.
} }
return ret_values; return ret_values;
}); });
m.def("get_grad_op_desc", m.def("get_grad_op_descs",
[](const OpDescBind &op_desc, [](const OpDescBind &op_desc,
const std::unordered_set<std::string> &no_grad_set, const std::unordered_set<std::string> &no_grad_set,
std::unordered_map<std::string, std::string> &grad_to_var, std::unordered_map<std::string, std::string> &grad_to_var,
const std::vector<BlockDescBind *> &grad_sub_block) { const std::vector<BlockDescBind *> &grad_sub_block) {
return framework::OpInfoMap::Instance() std::vector<std::unique_ptr<OpDescBind>> grad_op_descs =
.Get(op_desc.Type()) framework::OpInfoMap::Instance()
.GradOpMaker()(op_desc, no_grad_set, &grad_to_var, .Get(op_desc.Type())
grad_sub_block); .GradOpMaker()(op_desc, no_grad_set, &grad_to_var,
grad_sub_block);
std::vector<OpDescBind *> grad_op_desc_ptrs(grad_op_descs.size());
std::transform(
grad_op_descs.begin(), grad_op_descs.end(),
grad_op_desc_ptrs.begin(),
[](std::unique_ptr<OpDescBind> &p) { return p.release(); });
return grad_op_desc_ptrs;
}); });
m.def("prune", [](const ProgramDescBind &origin, m.def("prune", [](const ProgramDescBind &origin,
const std::vector<std::array<size_t, 2>> &targets) { const std::vector<std::array<size_t, 2>> &targets) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册