使用 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)