第四周
目录
学习时间
5月2日 到 6月9日
学习目标
- 深度学习计算章节学习
- 卷积神经网络章节学习
- alexnet代码实现
- ResNet论文阅读
学习内容
深度计算计算
卷积神经网络
CNN模型
学习总结
本周顺利完成了计划任务,重点在于卷积神经网络的概念和实现,CNN本质上就是一个特征提取的算法
- 从LeNet开始,CNN一直在往更深的网络发展
- VGG构建VGG块包含若干CNN层,然后通过VGG的叠加更轻易地构建深层网络,但是并不能解决全连接层的过拟合和参数过多的问题,
- NiN的主要进步在于去掉了最后的全连接层,而是利用1x1的卷积核在CNN结构中实现类似全连接的效果,最后只用全局的平均pooling作为CNN的输出,
- GoogleNet在类似NiN的前提下,对于Googlenet的块有了更精细的设计,将原始图像通过四条路径进行卷积,
- resnet作为跨时代的成果,巧妙的运用了残差连接提高了更深网络的效果,同时并不会增加网络的参数,
- DenseNet在ResNet的基础上并不是直接将CNN块的输入和输出相加,而是做cat操作,也没有增加更多参数但是提高了模型的表达能力
亮点
torch初始化权重方法
nn.init.normal_(m.weight, mean=0, std=0.01)
nn.init.zeros_(m.bias)
nn.init.constant_(m.weight, 1)
nn.init.xavier_uniform_(m.weight)
自定义参数
注意使用nn.Parameters
定义参数,此时可以使用named_parameters()
查看参数
class ....
self.weight = nn.Parameters()
...
模型的导出和加载
torch.save(net.state_dict(), 'mlp.params')
clone = MLP()
clone.load_state_dict(torch.load('mlp.params'))
clone.eval() # 评估模式而非训练模式
卷积层的过程
- 卷积核的层数与输入相同
- 各层卷积之后求和变成一层
- 一个卷积核输出一层
- 卷积核的个数等于输出层数
下周计划
- 学习RNN相关章节
- 学习 $\LaTeX$ 的使用
- 了解模型微调/双目视觉的基础理论