使用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 和交叉熵损失