[ torch 参数更多 ]torch.nn.functional.cross_entropy

torch.nn.functional.cross_entropy

torch.nn.functional.cross_entropy(input,
                                 target,
                                 weight=None,
                                 size_average=None,
                                 ignore_index=- 100,
                                 reduce=None,
                                 reduction='mean',
                                 label_smoothing=0.0)

paddle.nn.functional.cross_entropy

paddle.nn.functional.cross_entropy(input,
                                   label,
                                   weight=None,
                                   ignore_index=- 100,
                                   reduction='mean',
                                   soft_label=False,
                                   axis=- 1,
                                   use_softmax=True)

两者功能一致,torch 参数更多,具体如下:

参数映射

PyTorch PaddlePaddle 备注
input input 表示预测的 Tensor 。
target label 表示真实的 Tensor 。
weight weight 表示权重。
size_average - 已弃用 。
ignore_index ignore_index 表示忽略的标签值 。
reduce - 已弃用 。
reduction reduction 表示应用于输出结果的计算方式 。
label_smoothing - 指定计算损失时的平滑量, Paddle 无此参数,暂无转写方式。
- soft_label 指明 label 是否为软标签, PyTorch 无此参数, Paddle 保持默认即可。
- axis 进行 softmax 计算的维度索引, PyTorch 无此参数, Paddle 保持默认即可。
- use_softmax 指定是否对 input 进行 softmax 归一化, PyTorch 无此参数, Paddle 保持默认即可。

转写示例

size_average

size_average 为 True

# PyTorch 写法
torch.nn.functional.cross_entropy(x,y,size_average=True)

# Paddle 写法
paddle.nn.functional.cross_entropy(x,y,reduction='mean')

size_average 为 False

# PyTorch 写法
torch.nn.functional.cross_entropy(x,y,size_average=False)

# Paddle 写法
paddle.nn.functional.cross_entropy(x,y,reduction='sum')

reduce

reduce 为 True

# PyTorch 写法
torch.nn.functional.cross_entropy(x,y,reduce=True)

# Paddle 写法
paddle.nn.BCEWithLogitsLoss(reduction='mean')

reduce 为 False

# PyTorch 写法
torch.nn.functional.cross_entropy(x,y,reduce=False)

# Paddle 写法
paddle.nn.BCEWithLogitsLoss(reduction='none')

reduction

reduction 为’none’

# PyTorch 写法
torch.nn.functional.cross_entropy(x,y,reduction='none')

# Paddle 写法
paddle.nn.functional.cross_entropy(x,y,reduction='none')

reduction 为’mean’

# PyTorch 写法
torch.nn.functional.cross_entropy(x,y,reduction='mean')

# Paddle 写法
paddle.nn.functional.cross_entropy(x,y,reduction='mean')

reduction 为’sum’

# PyTorch 写法
torch.nn.functional.cross_entropy(x,y,reduction='sum')

# Paddle 写法
paddle.nn.functional.cross_entropy(x,y,reduction='sum')