tf.losses.sigmoid_cross_entropy.md 1.7 KB
Newer Older
J
jiangjiajun 已提交
1 2
## tf.losses.sigmoid_cross_entropy

J
jiangjiajun 已提交
3
### [tf.losses.sigmoid_cross_entropy](https://www.tensorflow.org/versions/r1.13/api_docs/python/tf/losses/sigmoid_cross_entropy)
J
jiangjiajun 已提交
4 5 6 7 8 9 10 11 12 13 14 15 16

```python
tf.losses.sigmoid_cross_entropy(
    multi_class_labels,
    logits,
    weights=1.0,
    label_smoothing=0,
    scope=None,
    loss_collection=tf.GraphKeys.LOSSES,
    reduction=Reduction.SUM_BY_NONZERO_WEIGHTS
)
```

J
jiangjiajun 已提交
17
### [paddle.fluid.layers.sigmoid_cross_entropy_with_logit](http://paddlepaddle.org/documentation/docs/zh/1.4/api_cn/layers_cn.html#sigmoid_cross_entropy_with_logits)
J
jiangjiajun 已提交
18 19 20 21 22

```python
paddle.fluid.layers.sigmoid_cross_entropy_with_logits(
    x, 
    label, 
23 24 25
    ignore_index=-100, 
    name=None, 
    normalize=False)
J
jiangjiajun 已提交
26 27 28 29 30 31 32 33 34
```

### 功能差异

#### 返回值类型

Tensorflow:通过控制`reduction`参数,返回结果可以是rank为0的tensor,也可以是shape与`logits`相同的tensor;  
PaddlePaddle:固定返回shape与`x`相同的tensor,表示每个样本在每个标签上的损失。

35
#### 调权与平滑
J
jiangjiajun 已提交
36 37 38 39

Tensorflow:通过`weights`,可以设置不同样本、不同label的权重;通过`label_smoothing`,可以控制对label进行平滑;  
PaddlePaddle:不支持调权与平滑功能。

40 41 42 43 44 45 46 47
#### 忽略标签
Tensorflow:不支持;  
PaddlePaddle:通过设置`ignore_index`可以指定被忽略的标签,不影响梯度。

#### 归一化
Tensorflow:不支持;
PaddlePaddle:通过设置`normalize`,各样本损失函数会除以除去`ignore_index`外的样本数。

J
jiangjiajun 已提交
48 49 50 51 52 53 54 55
### 代码示例
```
# x与label均是shape为[3,5]的tensor,表示三个样本,每个样本有5个类别

# out是shape为[3,5]的tensor,表示每个样本在每个类别上的loss
out = fluid.layers.sigmoid_cross_entropy_with_logits(x, label)


J
jiangjiajun 已提交
56
```