多层感知机的简洁实现
一、前言
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) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 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)