3.10多層感知機の簡潔な実現

5065 ワード

学習サイト:http://tangshusen.me/Dive-into-DL-PyTorch/#/
import torch
from torch import nn
from torch.nn import init
import numpy as np
import sys
sys.path.append("..") 
import d2lzh_pytorch as d2l

1定義モデル
隠し層として全連結層を追加しました。その隠しユニットの個数は256で、ReLU関数を活性化関数として使用します。
num_inputs, num_outputs, num_hiddens = 784, 10, 256

net = nn.Sequential(
        d2l.FlattenLayer(),
        nn.Linear(num_inputs, num_hiddens),
        nn.ReLU(),
        nn.Linear(num_hiddens, num_outputs), 
        )

for params in net.parameters():
    init.normal_(params, mean=0, std=0.01)
2データを読み、モデルを訓練する
使用しているのはPyTorchのSGDです。d 2 lzh_ではありません。pytochの中のsgdは3.9節ほど勉強率が大きく見える問題がありません。
batch_size = 256
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)
loss = torch.nn.CrossEntropyLoss()

optimizer = torch.optim.SGD(net.parameters(), lr=0.5)

num_epochs = 5
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, batch_size, None, None, optimizer)
epoch 1, loss 0.0031, train acc 0.699, test acc 0.748
epoch 2, loss 0.0019, train acc 0.822, test acc 0.772
epoch 3, loss 0.0017, train acc 0.842, test acc 0.834
epoch 4, loss 0.0015, train acc 0.857, test acc 0.851
epoch 5, loss 0.0014, train acc 0.865, test acc 0.852