前言
基于pytorch框架的softmax分类网络简洁实现。
读取数据
batch_size=256
train_iter, test_iter = data_iter.load_data_fashion_mnist(batch_size)
定义模型
net=nn.Sequential(nn.Flatten(),nn.Linear(784,10))
初始化模型参数
def init_weights(m):
if type(m)==nn.Linear:
nn.init.normal_(m.weight,std=0.01) # 默认均值0,标准差为1
net.apply(init_weights)
损失函数
softmax操作整合到交叉熵损失函数之中。
loss=nn.CrossEntropyLoss(reduction='none') # 不综合,表示输出所有样本的损失,reduction还可以选择mean计算损失的均值,选择sum输出损失的和
优化算法
trainer=torch.optim.SGD(net.parameters(),lr=0.08)
训练
训练过程:
- 计算预测值
- 计算损失
- 反向传播
- 更新参数
num_epochs=10
Train.train(net,train_iter,test_iter,loss,num_epochs,trainer)