【动手学深度学习】softmax回归

1.softmax回归基本概念

分类问题
独热编码(one-hot encoding):是一个向量,类别对应的分量设置为1,其他所有分量设置为0。在我们的例子中,标签y将是一个三维向量,其中(1,0,0)对应于“猫”、(0,1,0)对应于“鸡”、(0,0,1)对应于“狗”
在这里插入图片描述
网络架构
例子:4个特征,3个可能的输出类别,需要12个标量表示权重(带下标的w),3个标量表示偏置(带下标的b),3个预测值(o1,o2,o3)在这里插入图片描述
在这里插入图片描述
softmax回归是一种单层神经网络
全连接层的参数开销
对于任何具有d个输入和q个输出的全连接层,参数开销为O(dq)。
softmax运算
softmax函数:softmax函数能够将未来规范化的预测变换为非负数并且总和为1,同时让模型保持可导的性质。
在这里插入图片描述
在这里插入图片描述
尽管softmax函数是一个非线性函数,但softmax回归的输出仍然由输入特征的放射变换决定。因此,softmax回归是一个线性模型。
小批量样本的矢量化
在这里插入图片描述
损失函数
损失函数用来度量预测的效果
对数似然
损失函数:
在这里插入图片描述
softmax及其导数
交叉熵损失
对于标签y,我们可以使用与以前相同的表示形式,唯一的区别是,我们现在可以用一个概率向量表示,如(0.1,0.2,0.7),而不是仅包含二元项的向量(0,0,1),交叉熵损失是分类问题最常用的损失之一。
模型预测和评估
在训练softmax回归模型后,给出任何样本特征,我们可以预测每个输出类别的概率,通常我们使用预测概率最高的类别作为输出类别。如果预测与实际类别(标签)一致,则预测是正确的。
精度:正确预测数与预测总数之间的比率。
小结

  • softmax运算获取一个向量并将其映射为概率
  • softmax回归适用于分类问题,它使用了softmax运算中输出类别的概率分布
  • 交叉熵是一个衡量两个概率分布之间差异很好的度量,它测量给定模型编码数据所需的比特数

2.图像分类数据集流程图

创建函数可视化样本
Fashion-MNIST数据集

在这里插入图片描述

load_data_fashion_mnist函数:用于获取和读取Fashion-MNIST数据集。 这个函数返回训练集和验证集的数据迭代器

在这里插入图片描述

3.softmax从零开始实现流程图

train_ch3
功能:在train_iter访问到的训练数据集上训练一个模型net,该训练函数会运行多个迭代周期(由num_epochs指定),在每个迭代周期结束时,利用test_iter访问到的测试集数据对模型进行评估,利用Animator类来可视化训练进度
assert断言
用于判断一个表达式,在表达式为False时触发异常,断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况

流程图
在这里插入图片描述

train_epoch_ch3
.zero_grad()作用
1.zero_grad()函数的应用
在pytorch中做随机梯度下降时往往会用到zero_grad()函数
optimizer.zero_grad()# 将模型的参数梯度初始化
outputs=model(inputs) # 前向传播计算预测值
locostss=cost(outputs,y_train) # 计算当前损失
loss.backward() # 反向传播计算梯度
optimizer.step() # 更新所有参数
2.zero_grad() 函数的作用
根据pytorch中的backward() 函数计算,当网络参量进行反馈时,梯度是累计计算而不是被替换,但在处理每一个batch时并不需要与其他batch的梯度混合起来累积计算,因此需要对每个batch调用一遍zero_grad()将参数梯度置0

流程图
在这里插入图片描述

predict_ch3
对图像进行分类预测

在这里插入图片描述

4.softmax回归的简洁实现

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值