有关softmax(),与CrossEntropyLoss()
一,有关softmax()
[0.2,0.1,-0.1]后面不需要再做线性变换。softmax()函数的作用是1,对[0.2,0.1,-0.1]求指数运算,然后算他们三个对应的概率(ps:e^0.2 / (e^0.2+e^0.1+e^-0.1))得到[0.38,0.34,0.28].
二、有关loss = -(y*log(y_pred)+(1-y)*log(1-y_pred))
不知道为啥,就变-y*log(y_pred)了,这y是[1,0,0]啊。。。
不懂,反正他就是把后面的(1-y)等于0了。
y = np.array([1,0,0])
z = np.array([0.2,0.1,-0.1])
y_pred = np.exp(z)/np.exp(z).sum() #softmax()一下
loss = (-y*np.log(y_pred)).sum() #loss()一下
print(loss) #
用CrossEntropyloss()
y1 = torch.LongTensor([0]) #第0类,longTensor
z1 = torch.Tensor([[0.2,0.1,0.1]]) #torch.Tensor()
criterion = torch.nn.CrossEntropyLoss()
loss1 =criterion(z1,y1) #先z1,后y1,先预测,后真实