Faster version for RowWiseSparseAdagradOp
Summary: Move common operation out of loop.
Reviewed By: dzhulgakov
Differential Revision: D5962894
fbshipit-source-id: e4f8a5406c870958215cbc1fd366fa87bc381471
diff --git a/caffe2/sgd/adagrad_op.h b/caffe2/sgd/adagrad_op.h
index 4e9ea10..98a535f 100644
--- a/caffe2/sgd/adagrad_op.h
+++ b/caffe2/sgd/adagrad_op.h
@@ -241,8 +241,9 @@
hs += gj * gj;
}
float hi = nh[0] = h[0] + hs / block_size;
+ float step = lr[0] / (std::sqrt(hi) + epsilon_);
for (auto j = 0; j < block_size; ++j) {
- nw[j] = w[j] + lr[0] * g[j] / (std::sqrt(hi) + epsilon_);
+ nw[j] = w[j] + g[j] * step;
}
}
}