1. 导入包,加载Mnist数据集
2.
代码:
import torch from torch import nn from d2l import torch as d2l batch_size = 256 train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size) # PyTorch不会隐式地调整输入的形状。因此, # 我们加入一个Flatten()层展平。Flatten()就是把任何维度的Tensor变成一个2D的tensor # 第0维度保留,剩下的维度全部展成一个向量 net = nn.Sequential(nn.Flatten(), nn.Linear(784, 10)) #init_weights这个函数会对每个layer做一次,m就是我们当前的layer def init_weights(m): #如果m是一个nn.Linear if type(m) == nn.Linear: #那么我们就把它的weight初始化成(均值默认为0)方差为1 nn.init.normal_(m.weight, std=0.01) return #把init_weights函数应用到我们的net上来 #即按照每一层去跑一下这个函数 net.apply(init_weights); #定义损失函数为交叉熵损失 loss = nn.CrossEntropyLoss(reduction='none') #定义训练器为梯度下降 trainer = torch.optim.SGD(net.parameters(), lr=0.1) num_epochs = 10 d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, trainer)
标签:简洁,nn,torch,iter,3.7,init,softmax,net,d2l From: https://www.cnblogs.com/pkuqcy/p/17443398.html