多层感知机的简洁实现

一、前言

1、和softmax实现一样,唯一的区别是我们模型含有两个全连接层

2、直接通过高级API更简洁实现多层感知机

3、对于相同的分类问题,多层感知机的实现和softmax回归的实现完全相同,只是多层感知机的实现增加了带有激活函数的隐藏层

 

二、模型

1、第一层是隐藏层,包含256个隐藏单元,并使用ReLU激活函数

2、第二层是输出层

1
2
3
4
5
6
7
8
9
10
11
12
13
# 因为图片是一个3D的东西,然后使用nn.Flatten()为二维
# nn.Linear(784, 256)线性层,输入为784,输出为256
# nn.Linear(256, 10)线性层,输入为256,输出为10
net = nn.Sequential(nn.Flatten(), nn.Linear(784, 256), nn.ReLU(),
                    nn.Linear(256, 10))
 
def init_weights(m):
    if type(m) == nn.Linear:
        #从给定均值和标准差的正态分布(mean, std)中生成值,填充输入的张量或变量
        nn.init.normal_(m.weight, std=0.01)
 
# net.apply:会先遍历子线性层,再遍历父线性层
net.apply(init_weights);

 

三、训练过程

1
2
3
4
5
6
# num_epochs:表示跑多少轮
batch_size, lr, num_epochs = 256, 0.1, 10
loss = nn.CrossEntropyLoss()# 损失函数
 
# 更新数据
trainer = torch.optim.SGD(net.parameters(), lr=lr)
1
2
3
4
5
# 下载测试数据集和训练数据集
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)
 
# 直接调用d2l包的train_ch3函数
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, trainer)

 

posted @   小秦同学在上学  阅读(471)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示