softmax回归的简洁实现
一、前言
1、通过深度学习框架的高级API能更方便地实现分类模型。
2、使用Fashion-MNIST数据集,并保持批量大小为256。
1 2 3 4 | #通过pytorch中nn的模型来实现softmax回归 import torch from torch import nn from d2l import torch as d2l |
1 2 | batch_size = 256 train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size) |
二、初始化模型参数
1、softmax回归的输出层是一个全连接层
2、为了实现模型,我们只需要在 Sequential
中添加一个带有10个输出的全连接层
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # PyTorch不会隐式地调整输入的形状。因此,我们在线性层前定义了展平层(flatten),来调整网络输入的形状 # Flatten()将任何维度的tensor转化为2D的tensor # Linear(784, 10)定义线性层,输入是784,输出是10 # nn.Sequential:一个时序容器。Modules 会以他们传入的顺序被添加到容器中 net = nn.Sequential(nn.Flatten(), nn.Linear(784, 10)) def init_weights(m): if type(m) == nn.Linear: # normal_正态分布 nn.init.normal_(m.weight, std=0.01) # apply()用途:当一个函数的参数存在于一个元组或者一个字典中时,用来间接的调用这个函数,并肩元组或者字典中的参数按照顺序传递给参数 # 意思也就是在每层跑一下该函数 net.apply(init_weights); |
三、损失函数定义
在交叉熵损失函数中传递未归一化的预测,并同时计算softmax及其对数
1 | loss = nn.CrossEntropyLoss() |
四、优化算法
使用学习率为0.1的小批量随机梯度下降作为优化算法
1 | trainer = torch.optim.SGD(net.parameters(), lr=0.1) |
五、训练
调用之前定义的训练函数来训练模型
1 2 | num_epochs = 10 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)