(未完)
import torch
import torch.nn as nn
import numpy as np
def softmax(x):
return np.exp(x) / np.sum(np.exp(x), axis=0)
X = np.array([2.0, 1.0, 0.1])
outputs = softmax(X)
print('softmax numpy',outputs)
x = torch.tensor([2.0, 1.0, 0.1])
outputs = torch.softmax(x, dim=0)
print('softmax torch', outputs)
def cross_entropy(actual, predicted):
EPS = 1e-15
predicted = np.clip(predicted, EPS, 1 - EPS)
# 把数组中所有数值限制在EPS到1-EPS之间 小于EPS变为EPS 大于1-EPS变为1-EPS
loss = -np.sum(actual * np.log(predicted))
return loss
Y = np.array([1, 0, 0])
Y_pred_good = np.array([0.7, 0.2, 0.1])
Y_pred_bad = np.array([0.1, 0.3, 0.6])
l1 = cross_entropy(Y, Y_pred_good)
l2 = cross_entropy(Y, Y_pred_bad)
print(f'Loss1 numpy:{l1:.4f}')
print(f'Loss2 numpy:{l2:.4f}')