Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
X2Paddle
提交
faf006b2
X
X2Paddle
项目概览
PaddlePaddle
/
X2Paddle
大约 1 年 前同步成功
通知
328
Star
698
Fork
167
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
26
列表
看板
标记
里程碑
合并请求
4
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
X
X2Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
26
Issue
26
列表
看板
标记
里程碑
合并请求
4
合并请求
4
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
faf006b2
编写于
4月 09, 2019
作者:
J
Jason
提交者:
GitHub
4月 09, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update SigmoidCrossEntropyLoss.md
上级
5b8d27f0
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
18 addition
and
64 deletion
+18
-64
caffe2fluid/doc/SigmoidCrossEntropyLoss.md
caffe2fluid/doc/SigmoidCrossEntropyLoss.md
+18
-64
未找到文件。
caffe2fluid/doc/SigmoidCrossEntropyLoss.md
浏览文件 @
faf006b2
## S
ofmaxWith
Loss
## S
igmoidCrossEntropy
Loss
### [S
ofmaxWithLoss](http://caffe.berkeleyvision.org/tutorial/layers/softmaxwith
loss.html)
### [S
igmoidCrossEntropyLoss](http://caffe.berkeleyvision.org/tutorial/layers/sigmoidcrossentropy
loss.html)
```
layer {
name: "loss"
type: "S
oftmaxWith
Loss"
type: "S
igmoidCrossEntropy
Loss"
bottom: "pred"
bottom: "label"
top: "loss"
loss_param{
ignore_label: -1
normalize: 0
normalization: FULL
}
}
```
### [paddle.fluid.layers.s
oftmax_with_cross_entropy](http://paddlepaddle.org/documentation/docs/zh/1.3/api_cn/layers_cn.html#permalink-164-softmax_with_cross_entropy
)
### [paddle.fluid.layers.s
igmoid_cross_entropy_with_logits](http://paddlepaddle.org/documentation/docs/zh/1.3/api_cn/layers_cn.html#permalink-158-sigmoid_cross_entropy_with_logits
)
```
python
paddle
.
fluid
.
layers
.
softmax_with_cross_entropy
(
logits
,
label
,
soft_label
=
False
,
ignore_index
=
-
100
,
numeric_stable_mode
=
False
,
return_softmax
=
False
paddle
.
fluid
.
layers
.
sigmoid_cross_entropy_with_logits
(
x
,
label
,
ignore_index
=-
100
,
name
=
None
,
normalize
=
False
)
```
### 功能差异
#### 输入格式
Caffe: 采用硬标签方式输入,同时进行预处理操作;
PaddlePaddle:通过参数
`soft_label`
的设定,支持硬标签和软标签两种输入。
> 计算softmax的loss时,根据每个样本是否被分配至多个类别中可以分为两类——硬标签和软标签
> **硬标签:** 即one-hot label,每个样本仅分到一个类别中。在硬标签中,根据是否对未初始化的log概率进行预处理,又可以分为两类,预处理主要是完成对每个样本中的每个log概率减去该样本中的最大的log概率
> **软标签:** 每个样本至少被分配到一个类别中
#### 输入数据
Caffe:输入的数据维度最大是4维(
`N*C*H*W`
)。
PaddlePaddle:输入只能是2维(
`N*H`
)。
#### 输出结果
Caffe:输出是对所有样本的loss进行归一化后的结果,归一化的方式由
`normalization`
和
`normalize`
参数决定;
```
归一化形式:
1. 当`normalization`是FULL或0时,整个loss取和后除以batch的大小.
2. 当`normalization`是VALID或1时,整个loss取和后除以除`ignore_label`以外的样本数。
3. 当`normalization`是NONE时,则loss取和.
4. 当`normalization`未设置时,采用`normalize`的值进行判断,若`normalize==1`则归一化方式是VALID,若`normalize==0`则归一化方式是FULL。
```
PaddlePaddle:输出是每个样本的loss所组成的一个向量,同时如果将参数
`return_softmax`
设为True,则输出的是loss向量和softmax值组成的一个元组。
Caffe:输出的数据大小是
`1*1*1*1`
,即将所有位置上的loss取均值。
PaddlePaddle:输出和输入大小一致,即
`N*H`
。
#### 其他差异
Caffe:无
`ignore_index`
和
`normalize`
参数。
PaddlePaddle:可以通过设定
`ignore_index`
来确定忽略的目标值,同时它有一个
`normalize`
参数进行归一化。
### 代码示例
```
# Caffe示例:
# pred输入shape:(100,10)
# label输入shape:(100,1)
# 输出shape:()
layer {
name: "loss"
type: "SoftmaxWithLoss"
bottom: "pred"
bottom: "label"
top: "loss"
loss_param{
ignore_label: -1
normalize: 0
normalization: FULL
}
}
```
```
python
# PaddlePaddle示例:
# pred输入shape:(100,10)
# label输入shape:(100,1)
# 输出shape:(10,1)
softmaxwithloss
=
fluid
.
layers
.
softmax_with_cross_entropy
(
logits
=
logs
,
label
=
labels
,
soft_label
=
False
,
ignore_index
=-
100
,
numeric_stable_mode
=
False
,
return_softmax
=
False
)
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录