图像上的Caffe Euclidean损失计算

时间:2018-02-20 13:28:34

标签: c++ neural-network deep-learning caffe conv-neural-network

假设caffe中神经网络的输出是大小为w x h的图像。 假设我正在使用大小为N的批量大小。

我是否正确假设欧几里德损失(由标准caffe层计算)总和所有w x h值的平方误差,平方根,然后平均值超过批量大小N?

也就是说,它不是在w x h值上的平均值?

谢谢。

PS:有没有办法在堆栈溢出中使用数学环境?

1 个答案:

答案 0 :(得分:2)

根据代码,它没有对w x h值进行平均,并且也没有使用平方根。它只对批量大小N进行平均,然后除以2。

  template <typename Dtype>
  void EuclideanLossLayer<Dtype>::Forward_cpu(const vector<Blob<Dtype>*>&bottom,const vector<Blob<Dtype>*>& top) {
      int count = bottom[0]->count();
      caffe_sub(count,
      bottom[0]->cpu_data(),
      bottom[1]->cpu_data(),
      diff_.mutable_cpu_data());
      Dtype dot = caffe_cpu_dot(count, diff_.cpu_data(), diff_.cpu_data());
      Dtype loss = dot / bottom[0]->num() / Dtype(2);
      top[0]->mutable_cpu_data()[0] = loss;
  }