之前学习的都是线性的串行结构 就是上一个的输出作为下个的输入

00:02:06.381 image.png

convoltion:卷积 pooling:池化 softmax:输出 other:拼接层

为了减少代码冗余: - 使用函数调用 - 构造类 00:04:05.180 image.png

发现这些快长得都一样 所以把其封装成类

00:06:02.235 image.png

有一些参数比较难选 比如kernel选哪个,

googlenet的思路是,再一个块中,使用多个kernnel 然后对结果进行评价,让最优的kernel权重增加

00:09:21.370 image.png

对于每一条路,变换之后bwh必须相同 c可以不同 00:11:39.744 image.png

00:11:51.236 image.png

00:11:59.066 image.png

00:13:31.719 image.png

00:13:30.545 00:13:30.545 image.png

求和也就是信息融合

00:17:39.604 image.png

00:19:24.494 image.png 上面这个的运算量太大了

00:20:06.613 image.png 直接变为原来的十分之一

这个也就是1x1的卷积神经网络的作用

网络中的网络:1x1卷积

00:22:11.511 image.png 00:23:26.250 image.png

00:24:49.219 image.png

00:26:49.045 image.png

00:26:57.307 image.png

00:27:05.035 image.png

00:27:21.746 image.png

00:28:02.994 image.png

00:28:25.721 image.png

所有的内容整合到一块,形成一个类

00:29:13.195 image.png

右图是构造网络 00:30:37.481 image.png

一共输出88个通道 00:31:02.224

00:31:17.952 image.png

这也是代码中88的由来

00:33:12.296 image.png

最优的是在中间,而不是最后,所以训练轮数不是越多越好 ,后面有过拟合的倾向

00:34:28.892 image.png

对于这种情况的操作是,将最好的版本进行存盘

00:36:12.213 image.png

00:37:19.877 image.png

20层的卷积比56层更好

原因有可能是:梯度消失

当梯度趋近于0时,权重就得不到更新 也就是里输入比较近的块,没办法得到充分的训练

训练神经网络若干个层

解决办法 00:38:46.307 image.png

将每一层进行加锁 算完之后加锁 逐层训练

这个实际上是很难执行的,因为层数很多

00:39:34.549 image.png

00:39:48.820 image.png

跳连接

加完了再激活

重点是和x做加法 这就要求输出F(x)的bchw都需要和x一致 b batch c channel 。。。 00:42:02.763 image.png

00:42:21.659 image.png

00:45:04.552 image.png

00:45:47.831 image.png

注意最后一步顺序 先求和,再激活

00:46:59.699 image.png

00:49:19.322 image.png

00:49:27.563 image.png

接下来的学习路线 00:53:35.096 image.png

00:53:47.566 image.png

最好通读一遍pytorch 00:54:13.784 image.png

复现一些比较经典的代码 00:54:48.217 image.png

跑通代码不对 应该是读代码,了解架构

然后进行架构的复现,00:56:14.756 image.png

00:57:10.414 image.png

00:57:21.636 image.png

完结撒花