码迷,mamicode.com
首页 > 其他好文 > 详细

euclidean loss

时间:2018-06-24 19:38:56      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:分享   pen   开平方   注意   oid   sub   距离   tab   ott   

技术分享图片

个人感觉相当于L2范式开平方,也相当于针对两个向量的欧氏距离开平方

说的更直白点就是两个向量对应位置相减得到每个位置的差,然后把每个位置的差开平方再相加

前向传播cpp代码:


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;
}

注意:caffe_cpu_dot做的是点积,点积对应点相乘后还要把所有这些乘积结果相加,不只是做乘积

将bottom0和bottom1按照对应位置相减赋值给diff_这个blob,对这个blob中所有数字开平方相加起来就是loss

euclidean loss

标签:分享   pen   开平方   注意   oid   sub   距离   tab   ott   

原文地址:https://www.cnblogs.com/ymjyqsx/p/9221180.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!