pytorch 实现空洞卷积 + 残差网络实验(torch 实现
一:pytorch 实现空洞卷积实验(torch 实现)要求:从至少一个数据集上进行实验,同理,这里我选取了车辆分类数据集(后面的实验都是用的车辆分类数据集),主要在之前利用 torch.nn 实现二维卷积的基础上,为解决感受野比较的问题,将普通的卷积修改为空洞卷积,并且卷几率符合 HDC 条件(这里我选取了 1,2,5),并且堆叠了 2 层 HDC,即一共六层卷积层。实验过程:注:所谓的空洞卷积,与https://blog.csdn.net/qq_37534947/article/details/109726153的 torch.nn 实现的二维卷积除了模型的定义部分不一样之外,其他的如:数据集、画图、计时、优化器等都是一样的,当然参数设置可能会有些不同,主要在实验结果区分,所以我这里主要针对模型定义做相关介绍。1.1 空洞卷积模型定义
注:可以从上面可以看出一共有 6 个空洞卷积层,其空洞率分别是 1、2、5、1、2、5;1、2、5 不包含大于 1 的公约数,所以其是包含 2 个的 HDC,然后其每一层的输入和输出的算法见注释。
二:pytorch 实现残差实验(torch 实现)要求:从至少一个数据集上进行实验,这里我选取了车辆分类数据集,在给定结构的残差网络中,进行模型的搭建以及训练。实验结构:
实验过程:这里实验过程和 4 上面大部分一样,主要是模型设计不同,所以这里主要介绍一下给定的残差网络的模型实现代码。2.1 残差网络块的实现
注:这部分主要借鉴的是 ppt 和网上残差的实现,主要定义了每个残差块内的卷积操作,给定的残差结构内都是两个卷积,,所以这里的 self.block1 就是其实现,然后因为在残差块的开始会有通道的改变,以及步长的改变,从而导致图片的长和宽变化,所以定义了 self.shortcut 定义是否会导致变化,然后利用 self.block2 定义的卷积进行改变输入的大小使得通道可以相加 2.2 模型定义
注:这部分就是主要的模型结构的实现,定义了 make_layer 函数可以进行相同连续残差块的计算,然后调用之前定义好的残差块。
完整代码及数据集下载,见:https://download.csdn.net/download/qq_37534947/13117846
版权声明: 本文为 InfoQ 作者【Studying_swz】的原创文章。
原文链接:【http://xie.infoq.cn/article/e8d110ef66345c7ed72c12509】。文章转载请联系作者。
评论