未验证 提交 c4489b8b 编写于 作者: J Jason 提交者: GitHub

Update EuclideanLoss.md

上级 281787e4
......@@ -22,15 +22,26 @@ paddle.fluid.layers.square_error_cost(
```
### 功能差异
#### 计算机制的差异
Caffe:计算的是整个输入的欧氏距离除以两倍的样本个数,最终获得的是一个值。
#### 实现方式
Caffe:对整个输入的欧氏距离进行取和后除以两倍的样本个数,最终获得一个标量数值。
PaddlePaddle:使用elemenwise方式,计算`input``label`对应元素的欧式距离,最终获得一个array(输入和输出`shape`一致):
PaddlePaddle:计算的是`input``label`中每个值对应的L2距离,输出的大小和输入大小一致。若要通过PaddlePaddle实现Caffe的这一操作可以通过下面示例完成:
### 代码示例
```python
inputs = paddle.fluid.layers.data(name = 'data1', shape = [2,3,227,227], append_batch_size = False, dtype = 'float32')
labels = paddle.fluid.layers.data(name = 'data1', shape = [2,3,227,227], append_batch_size = False, dtype = 'float32')
loss = paddle.fluid.layers.square_error_cost(input = inputs, label = labels)
sum = paddle.fluid.layers.sum(x = loss)
res = sum/(2*inputs.shape[0])
# 利用PaddlePaddle实现Caffe的EuclideanLoss
def EuclideanLoss(inputs, label):
elw_eud = fluid.layers.square_error_cost(data, label)
eud = fluid.layers.reduce_mean(elw_eud)
eud = fluid.layers.scale(eud, scale=0.5)
return eud
# 调用函数计算欧氏路离
# inputs: [1, 2, 4, 5, 6]
# labels: [6, 5, 4, 3, 2]
# eud: 5.4
inputs = fluid.layers.data(dtype='float32', shape=[5], name='data')
labels = fluid.layers.data(dtype='float32', shape=[5], name='label')
eud = EulideanLoss(inputs, labels)
```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册