欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Pytorch深度学习基础——Softmax回归实现

程序员文章站 2022-05-26 21:13:02
...

Pytorch实现Softmax回归

FashionMNIST数据集

我们将会使用FashionMNIST这个数据集,这相当于机器学习当中的“Hello World”,无论什么时候提出一个新的分类算法,都想知道该算法在这个数据集上的表现如何。Pytorch深度学习基础——Softmax回归实现

获取数据集

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
train_iter=torch.utils.data.DataLoader(mnist_train,batch_size=batch_size,shuffle=True,num_workers=num_workers)
test_iter=torch.utils.data.DataLoader(mnist_test,batch_size=batch_size,shuffle=True,num_workers=num_workers)

定义模型并训练

num_inputs=784
num_outputs=10
class LinearNet(nn.Module):
    def __init__(self,num_inputs,num_outputs):
        super(LinearNet,self).__init__()
        self.linear=nn.Linear(num_inputs,num_outputs)
    def forward(self,X):
        y=self.linear(X.view(X.shape[0],-1))
        return y
net=LinearNet(num_inputs,num_outputs);
print(net)
class FattenLayer(nn.Module):
	##处理数据集的shape
    def __init__(self):
        super(FattenLayer,self).__init__()
    def forward(self,X):
        return X.view(X.shape[0],-1)
net=nn.Sequential(
    FattenLayer(),
    LinearNet(num_inputs,num_outputs)
)
init.normal_(net[1].linear.weight,mean=0,std=0.01)
init.constant_(net[1].linear.bias,val=0)
loss=nn.CrossEntropyLoss()
optimizer=torch.optim.SGD(net.parameters(),lr=0.1)
num_epochs = 5
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, batch_size, None, None, optimizer)