使用softmax
00:01:46.755
00:01:58.457
image.png

十个分类神经网络应该如何设计

00:03:21.365
image.png
希望的要求:
输出之间竞争性
输出就是一个分布

  1. 概率大于0
  2. 概率求和为1
    00:08:00.963
    image.png

00:09:30.429
image.png
00:10:29.210
image.png

求和之后结果为100:12:58.619
image.png

00:13:42.719
image.png

00:14:09.852
image.png

00:14:49.264
image.png

00:14:59.977
image.png
交叉熵
00:18:14.365
image.png

00:19:17.457
image.png

00:19:36.942
image.png
00:20:50.262
image.png

00:21:47.606
image.png
00:22:31.144
image.png

最后一层是不需要手动进行非线性激活的,因为交叉熵损失会直接激活
image.png

00:24:38.539
image.png
00:24:21.657
image.png
2表示这个第二个元素最大
0表示第0个元素最大
1表示第一个元素最大

y_pred和预测的比较拟合,所以第一个预测算出来的损失会比较小
00:26:14.653
image.png

00:26:40.399
image.png
思考交叉熵和nll损失的区别

00:28:33.060
image.png

00:29:02.803
image.png

00:29:06.551
image.png
这里我们要引入测试的功能

代码实现:
00:29:52.698
image.png
不适用sigmod了,改用relu
00:30:08.431
image.png
00:30:14.345
image.png

优化器
00:30:23.356
image.png

这里最主要的区别,就是把图像转换成图像张量

00:32:50.134
image.png

单色就是单通道,多色就是多通道
一般是三通道
00:33:41.502
image.png

opencv中常获取的图像信息:w * H * c
但是在pytorch中需要把c放到最前面
00:33:57.790
image.png

00:34:16.453
image.png
通道、、宽 、、高
利用transforms的totesonor实现从pil ->pytorch

normailize
00:36:35.981
image.png

00:36:41.970
image.png

normal就是为了将数据转换成(0,1)
normalize第一个是 μ 第二个参数是 σ
image.png

00:38:18.002
image.png

00:39:45.167
image.png

全连接神经网络需要时右边的列表

00:40:38.006
image.png
784表示列数
-1表示
00:42:32.533
image.png

00:42:52.581
image.png

00:43:53.255
image.png

00:45:23.376
image.png
enumerate是为了能够获取当前训练的轮数)
00:48:45.600
image.png

==测试==
00:48:56.960
image.png
不需要进行梯度
这里使用with torch.no_grad()就可以实现这个作用域内的代码不会进行梯度计算

dim表示维度,这里表示一行
00:48:06.376
image.png

00:48:59.390
image.png

1
total+=labels.size(0)

对应上面的(N,1)的第一个元素
也就是total加N

将推测出来的分类也就是predicted跟labels作比较
如果为真就是1,假就为0

将正确的数量除以总数量

00:49:37.334
image.png

一轮训练一轮测试
00:50:12.320
image.png

注释是每十轮进行一次测试

00:50:37.645
image.png

这样的全连接00:52:23.768
00:52:49.617
image.png

00:53:14.233image.png
自动特征提取
cnn

手动特征提取fft、小波

总结

softmax
和交叉熵损失