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)

  

posted @   小秦同学在上学  阅读(413)  评论(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)
点击右上角即可分享
微信分享提示