【发布时间】:2021-03-25 00:00:23
【问题描述】:
我尝试做一个在 MNIST 数据集上运行的神经网络。我主要关注 pytorch.nn 教程。结果,我得到了一个可以学习的模型,但是这个过程或模型本身有问题。我在输出端接收到多个神经元,而不是一个活跃的神经元。
这是模型本身:
model = nn.Sequential(
nn.Linear(784, 64),
nn.ReLU(),
nn.Linear(64, 10),
nn.ReLU(),
)
这是训练过程:
loss_func = nn.CrossEntropyLoss()
opt = optim.SGD(model.parameters(), lr=lr)
for epoch in range(epochs):
model.train()
for xbt, ybt in train_dl:
pred = model(xbt)
loss = loss_func(pred, ybt)
opt.zero_grad()
loss.backward()
opt.step()
model.eval()
# Validation
if epoch % 10 == 0:
with torch.no_grad():
losses, nums = zip(
*[(loss_func(model(xbv), ybv), len(xbv)) for xbv, ybv in valid_dl]
)
val_loss = np.sum(np.multiply(losses, nums)) / np.sum(nums)
print(epoch, val_loss)
这是每 10 个 epoch 的平均损失:
0 0.13384412774592638
10 0.0900113809091039
20 0.09795805384699234
30 0.10341344920364791
40 0.10804545368137551
这就是将模型应用于验证集的结果如下:
[[ 0. 0. 0. ... 28.436266 0. 5.001435 ]
[ 7.3331523 12.666427 31.898096 ... 0. 0. 0. ]
[ 0. 18.116354 8.049953 ... 4.330721 0. 0. ]
...
[ 8.504517 0. 6.302228 ... 0. 0. 0. ]
[ 1.7339934 0. 0. ... 0. 2.1565871 0. ]
[45.750134 0. 6.2685804 ... 2.247082 0. 0. ]]
Shape: (9984, 10)
我尝试改变学习速度、模型层数、时期数,但似乎没有任何效果。
【问题讨论】:
标签: python neural-network pytorch mnist