Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
f0712301
F
FluidDoc
项目概览
PaddlePaddle
/
FluidDoc
通知
10
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
23
列表
看板
标记
里程碑
合并请求
111
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
FluidDoc
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
23
Issue
23
列表
看板
标记
里程碑
合并请求
111
合并请求
111
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
f0712301
编写于
9月 25, 2019
作者:
Z
Zeng Jinle
提交者:
GitHub
9月 25, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add cross_entropy_op doc, test=develop (#1355)
上级
2e4e3b70
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
17 addition
and
49 deletion
+17
-49
doc/fluid/api_cn/layers_cn/cross_entropy_cn.rst
doc/fluid/api_cn/layers_cn/cross_entropy_cn.rst
+17
-49
未找到文件。
doc/fluid/api_cn/layers_cn/cross_entropy_cn.rst
浏览文件 @
f0712301
...
@@ -5,67 +5,35 @@ cross_entropy
...
@@ -5,67 +5,35 @@ cross_entropy
.. py:function:: paddle.fluid.layers.cross_entropy(input, label, soft_label=False, ignore_index=-100)
.. py:function:: paddle.fluid.layers.cross_entropy(input, label, soft_label=False, ignore_index=-100)
该函数定义了输入和标签之间的cross entropy(交叉熵)层。该函数支持standard cross-entropy computation(标准交叉熵损失计算)
该OP计算输入input和标签label间的交叉熵,可用于计算硬标签或软标签的交叉熵。
以及soft-label cross-entropy computation(软标签交叉熵损失计算)
1. One-hot cross-entropy算法
soft_label = False, Label[i, 0] 指明样本i的类别所具的索引:
.. math::
\\Y[i]=-log(X[i,Label[i]])\\
2. Soft-label cross-entropy算法
soft_label = True, Label[i, j] 表明样本i对应类别j的soft label(软标签):
.. math::
\\Y[i]= \sum_{j}-Label[i,j]*log(X[i,j])\\
**请确保采用此算法时识别为各软标签的概率总和为1**
3. One-hot cross-entropy with vecterized label(使用向量化标签的One-hot)算法
作为 *2* 的特殊情况,当软类标签内部只有一个非零概率元素,且它的值为1,那么 *2* 算法降级为一种仅有one-hot标签的one-hot交叉熵
1. 硬标签交叉熵算法:若soft_label = False, :math:`label[i_1, i_2, ..., i_k]` 表示每个样本的硬标签值:
.. math::
\\output[i_1, i_2, ..., i_k]=-log(input[i_1, i_2, ..., i_k, j]), label[i_1, i_2, ..., i_k] = j, j != ignore\_index\\
2. 软标签交叉熵算法:若soft_label = True, :math:`label[i_1, i_2, ..., i_k, j]` 表明每个样本对应类别j的软标签值:
.. math::
\\output[i_1, i_2, ..., i_k]= -\sum_{j}label[i_1,i_2,...,i_k,j]*log(input[i_1, i_2, ..., i_k,j])\\
参数:
参数:
- **input** (Variable|list) – 一个形为[N x D]的二维tensor,其中N是batch大小,D是类别(class)数目。 这是由之前的operator计算出的概率,绝大多数情况下是由softmax operator得出的结果
- **input** (Variable) – 维度为 :math:`[N_1, N_2, ..., N_k, D]` 的多维Tensor,其中最后一维D是类别数目。数据类型为float32或float64。
- **label** (Variable|list) – 一个二维tensor组成的正确标记的数据集(ground truth)。 当 ``soft_label`` 为False时,label为形为[N x 1]的tensor<int64>。 ``soft_label`` 为True时, label是形为 [N x D]的 tensor<float/double>
- **label** (Variable) – 输入input对应的标签值。若soft_label=False,要求label维度为 :math:`[N_1, N_2, ..., N_k]` 或 :math:`[N_1, N_2, ..., N_k, 1]` ,数据类型为int64,且值必须大于等于0且小于D;若soft_label=True,要求label的维度、数据类型与input相同,且每个样本各软标签的总和为1。
- **soft_label** (bool) – 标志位,指明是否需要把给定的标签列表认定为软标签。默认为False。
- **soft_label** (bool) – 指明label是否为软标签。默认为False,表示label为硬标签;若soft_label=True则表示软标签。
- **ignore_index** (int) – 指定一个被无视的目标值,并且这个值不影响输入梯度。仅在 ``soft_label`` 为False时生效。 默认值: kIgnoreIndex
- **ignore_index** (int) – 指定一个忽略的标签值,此标签值不参与计算,负值表示无需忽略任何标签值。仅在soft_label=False时有效。 默认值为-100。
返回: 一个形为[N x 1]的二维tensor,承载了交叉熵损失
弹出异常: ``ValueError``
1. 当 ``input`` 的第一维和 ``label`` 的第一维不相等时,弹出异常
2. 当 ``soft_label`` 值为True, 且 ``input`` 的第二维和 ``label`` 的第二维不相等时,弹出异常
3. 当 ``soft_label`` 值为False,且 ``label`` 的第二维不是1时,弹出异常
返回: 表示交叉熵结果的Tensor,数据类型与input相同。若soft_label=False,则返回值维度与label维度相同;若soft_label=True,则返回值维度为 :math:`[N_1, N_2, ..., N_k, 1]` 。
返回类型:Variable
**代码示例**
**代码示例**
.. code-block:: python
.. code-block:: python
import paddle.fluid as fluid
import paddle.fluid as fluid
class
di
m = 7
class
_nu
m = 7
x = fluid.layers.data(name='x', shape=[3,
7], dtype='float32', append_batch_size=False
)
x = fluid.layers.data(name='x', shape=[3,
10], dtype='float32'
)
label = fluid.layers.data(name='label', shape=[
3, 1], dtype='float32', append_batch_size=False
)
label = fluid.layers.data(name='label', shape=[
1], dtype='int64'
)
predict = fluid.layers.fc(input=x, size=class
di
m, act='softmax')
predict = fluid.layers.fc(input=x, size=class
_nu
m, act='softmax')
cost = fluid.layers.cross_entropy(input=predict, label=label)
cost = fluid.layers.cross_entropy(input=predict, label=label)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录