PyTorch 实现 tf.keras.losses.categorical_crossentropy

这篇博客展示了如何在 PyTorch 中复现 TensorFlow 中的 `tf.keras.losses.categorical_crossentropy` 损失函数。通过具体的代码示例,作者比较了 TensorFlow 和 PyTorch 两种实现方式的等价性,并定义了一个自定义的 PyTorch 函数 `pt_categorical_crossentropy` 来计算分类交叉熵损失。

使用 PyTorch 实现 tf 中的 tf.keras.losses.categorical_crossentropy,或者 K.categorical_crossentropy

import tensorflow as tf
y_true = [[[0.,0.9]]]
y_pred = [[[0.4,0.6]]]
loss = tf.keras.losses.categorical_crossentropy(y_true, y_pred)
loss.numpy()
print('tf.keras.losses.categorical_crossentropy', loss)

loss = -(0*tf.math.log(0.4) + 0.9*tf.math.log(0.6))
print('tf.math.log', loss)

import torch
loss = -(0*torch.log(torch.tensor(0.4)) + 0.9*torch.log(torch.tensor(0.6)))
print('torch.loss', loss)

def pt_categorical_crossentropy(pred, label):
    """
    使用pytorch 来实现 categorical_crossentropy
    """
    # print(-label * torch.log(pred))
    return torch.sum(-label * torch.log(pred))

loss = pt_categorical_crossentropy(torch.tensor(y_pred), torch.tensor(y_true))
print(loss)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值