首先导入实现所需的包或模块。
import torch
import torchvision
import numpy as np
import sys
sys.path.append("..")
import d2lzh_pytorch as d2l
获取和读取数据
使用Fashion-MNIST数据集,并设置批量大小为256。
batch_size = 256
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)
初始化模型参数
跟线性回归中的例子一样,使用向量表示每个样本。已知每个样本输入是高和宽均为 28 28 28像素的图像。模型的输入向量的长度是 28 × 28 = 784 28\times28=784 28×28=784 :该向量的每个元素对应图像中每个像素。由于图像有10个类别,单层神经网络输出层的输出个数为 10 10 10,因此softmax回归的权重和偏差参数分别为 784 × 10 784\times10 784×10和 1 × 10 1\times10 1×10的矩阵。
num_inputs = 784
num_outputs = 10
W = torch.tensor(np.random.normal(0, 0.01, (num_inputs, num_outputs)), dtype=torch.float)
b = torch.zeros(num_outputs, dtype=torch.float)
模型参数梯度
W.requires_grad_(requires_grad=True)
b.requires_grad_(requires_grad=True)
实现softmax运算
在介绍如何定义softmax回归之前,先描述一下对如何对多维Tensor
按维度操作。在例子中,给定一个Tensor
矩阵X
。可以只对其中同一列(dim=0
)或同一行(dim=1
)的元素求和,并在