回归 vs. 分类
回归
- 连续值
- 一个输出
- 自然区间 R R R
- 与真实值的区别作为损失
分类
- 离散值
- 多个输出
- 输出预测是第 i 类的置信度
损失函数的选择
- 若选择均方误差
- 只取最大值不是特别合理,所以需要一个更置信的方法,即最大值比其他值都大出一个阈值
- 期望输出的是一个概率,即所有的和为1,用 Softmax
- 用交叉熵损失做分类问题
- 交叉熵损失的含义是当前预测的这个类别的概率有多接近真实的 1
损失函数
- L2 Loss:蓝色表示 y = 0 , y ′ y = 0,y' y=0,y′ 变化时函数的变化。绿色曲线为似然函数,是一个高斯分布。橙色表示梯度
- 这个梯度表示离远点越远,变化越快。离原点越近,变化越慢。
- L1 Loss
- 这个梯度表示变化速度恒定
- Huber' s Robust Loss
- 结合了上面两种损失的优点,在大的时候变化恒定,小的时候可以越来越小
图片分类数据集
- MNIST数据集过于简单,课上使用更复杂的Fashion-MNIST
- 导入相应的包
- 这里不知道为什么在线下载下载不了,只能自己下载了:https://zhuanlan.zhihu.com/p/551799637。注意这里还需要自己创建一个data文件夹
- 这里
[0][0]
表示第0张图片的第0列信息,即图片信息。而[0][1]
则是标签信息
- 下面是绘制出数据集的一些图片的信息
- 其中有细节都被跳过了,python基础不好的我感到有些疑惑,比如那个循环。还有axes要展平是因为它是一个二维数组要变成一维的
- 获取一个批次的数据,看看读取这些数据需要多久
- 数据读取部分,感觉套路就是①定义一个
trans
,肯定要transforms.Totensor()
,然后②定义dataset
,③把dataset
传到data.DataLoader
并且定义好batch_size
,shuffle
,num_workers
即可
Softmax从零实现
下面是直接在jupyter上做笔记了~
后面的部分太难了~反正以后也是用封装的,于是看过去就是了,没有详细理解