3.多层感知机的简洁实现-代码详解
作者:互联网
这里写自定义目录标题
代码
import torch # 导入 torch 模块
from torch import nn # 导入nn模块,很重要
from d2l import torch as d2l # 为了后续画图,报错请运行此代码(!pip install -U d2l)
net = nn.Sequential(
nn.Flatten(),# 展平一个连续范围的维度,输出类型为Tensor
nn.Linear(784,256), # 全连接层,相当于 Y = aX + b ;输入 维度 784 输出 维度 256
nn.ReLU(), # 激活函数 ReLU
nn.Linear(256,10))# 全连接层,相当于 Y = aX + b ;输入 维度 256 输出 维度 10
def init_weights(m): # 初始化 每个全连接层的权重 weight
if type(m) == nn.linear: # 判断是否为连接层
nn.init.normal_(m.weight,std=0.01)# 从正态分布N~(0,0.01)中随机抽取填充 m.weight
net.apply(net.weight) # 网络层 初始化 网络权重
batch_size,lr,num_epochs = 256,0.1,10 # 设置大小,学习率,迭代次数
loss = nn.CrossEntropyLoss() # 设置 损失函数为交叉熵损失函数
trainer = torch.optim.SGD(net.parameters(),lr=lr)# 实例化优化器->随机梯度下降SGD
train_iter,test_iter = d2l.load_data_fishion_mnist(batch_size) # 读取数据并将图片转换成数据集dataloader
d2l.train_ch3(net,train_iter,test_iter,loss,num_epochs,trainer) # 训练数据,并可视化数据
2. 结果
3. 模块备注
3.1 nn.Flatten()
3.2 nn.Linear()
3.3 nn.ReLU()
3.4 nn.init.normal_()
标签:nn,torch,多层,感知机,详解,d2l,维度,net,256 来源: https://blog.csdn.net/scar2016/article/details/120090628