|
|
|
@ -117,14 +117,14 @@ class Autograd {
|
|
|
|
|
std::map<OpBase*, int> dep_counts = ComputeDepCounts(var->PreOp());
|
|
|
|
|
|
|
|
|
|
while (!ready.empty()) {
|
|
|
|
|
OpBase* ready_op = ready.back();
|
|
|
|
|
ready.pop_back();
|
|
|
|
|
OpBase* ready_op = ready.front();
|
|
|
|
|
ready.pop_front();
|
|
|
|
|
std::map<std::string, std::vector<VarBase*>> input_grads =
|
|
|
|
|
ready_op->ApplyGrad();
|
|
|
|
|
|
|
|
|
|
for (auto it = input_grads.rbegin(); it != input_grads.rend(); ++it) {
|
|
|
|
|
const std::vector<VarBase*>& ingrads = it->second;
|
|
|
|
|
for (int64_t i = ingrads.size() - 1; i >= 0; --i) {
|
|
|
|
|
for (size_t i = 0; i < ingrads.size(); ++i) {
|
|
|
|
|
if (!ingrads[i]) continue;
|
|
|
|
|
if (ready_op->input_vars_[it->first][i]->IsStopGradient()) {
|
|
|
|
|
continue;
|
|
|
|
|