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
对图像进行分类预测