MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / grad

Method grad

src/opr/impl/loop/forward.cpp:250–263  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

248}
249
250VarNode* Loop::grad(Loop& opr, size_t wrt_idx, const VarNodeArray& out_grad) {
251 LoopGrad*& gopr =
252 opr.m_loss2grad_opr[cg::current_grad_target(*opr.owner_graph()).node()];
253 if (!gopr) {
254 // extra output is counter var
255 mgb_assert(
256 out_grad.size() == opr.m_desc->output_record_spec().size() + 1 &&
257 !out_grad.back());
258 VarNodeArray out_grad_used(out_grad);
259 out_grad_used.pop_back();
260 gopr = LoopGrad::make(&opr, out_grad_used);
261 }
262 return gopr->get_grad_var(wrt_idx);
263}
264
265#if MGB_ENABLE_GRAD
266MGB_IMPL_OPR_GRAD(Loop) {

Callers

nothing calls this directly

Calls 7

backMethod · 0.80
get_grad_varMethod · 0.80
makeFunction · 0.70
nodeMethod · 0.45
owner_graphMethod · 0.45
sizeMethod · 0.45
pop_backMethod · 0.45

Tested by

no test coverage detected