import joblib
import numpy as np
import torch
import torch.nn as nn


X_train = joblib.load('ch08/X_train.joblib')
X_train = torch.from_numpy(X_train.astype(np.float32)).clone()

X = X_train[0:4]

net = nn.Sequential(nn.Linear(X.size()[1], 4), nn.Softmax(1))
y_pred = net(X)
print(y_pred)
学習データの事例$$x_1$$と事例集合$$x_1, x_2, x_3, x_4$$に対して、クロスエントロピー損失と、行列$$W$$に対する勾配を計算せよ。なお、ある事例$$x_i$$に対して損失は次式で計算される。

$$
l_i = - \log [\mbox{事例}x_i\mbox{が}y_i\mbox{に分類される確率}]
$$

ただし、事例集合に対するクロスエントロピー損失は、その集合に含まれる各事例の損失の平均とする。