MCPcopy Create free account
hub / github.com/apache/singa / Backward

Method Backward

src/model/feed_forward_net.cc:218–238  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

216}
217
218const vector<Tensor> FeedForwardNet::Backward(int flag, const Tensor& grad) {
219 vector<Tensor> param_grads;
220 std::stack<Tensor> buf;
221 Tensor tmp = grad;
222 for (int i = (int)layers_.size() - 1; i >= 0; i--) {
223 // LOG(INFO) << layers_.at(i)->name() << " : " << tmp.L1();
224 auto ret = layers_.at(i)->Backward(flag, tmp);
225 tmp = ret.first;
226 if (ret.second.size()) {
227 for (int k = (int)ret.second.size() - 1; k >= 0; k--) {
228 buf.push(ret.second[k]);
229 // LOG(INFO) << " " << buf.top().L1();
230 }
231 }
232 }
233 while (!buf.empty()) {
234 param_grads.push_back(buf.top());
235 buf.pop();
236 }
237 return param_grads;
238}
239
240std::pair<Tensor, Tensor> FeedForwardNet::Evaluate(const Tensor& x,
241 const Tensor& y,

Callers 1

TrainOnBatchMethod · 0.45

Calls 3

emptyMethod · 0.80
sizeMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected