| 218 | |
| 219 | template <typename Dtype> |
| 220 | void GradientChecker<Dtype>::CheckGradientNet( |
| 221 | const Net<Dtype>& net, const vector<Blob<Dtype>*>& input) { |
| 222 | const vector<shared_ptr<Layer<Dtype> > >& layers = net.layers(); |
| 223 | vector<vector<Blob<Dtype>*> >& bottom_vecs = net.bottom_vecs(); |
| 224 | vector<vector<Blob<Dtype>*> >& top_vecs = net.top_vecs(); |
| 225 | for (int i = 0; i < layers.size(); ++i) { |
| 226 | net.Forward(input); |
| 227 | LOG(ERROR) << "Checking gradient for " << layers[i]->layer_param().name(); |
| 228 | CheckGradientExhaustive(*(layers[i].get()), bottom_vecs[i], top_vecs[i]); |
| 229 | } |
| 230 | } |
| 231 | |
| 232 | template <typename Dtype> |
| 233 | Dtype GradientChecker<Dtype>::GetObjAndGradient(const Layer<Dtype>& layer, |