0
点赞
收藏
分享

微信扫一扫

深度学习之 11 卷积神经网络实现

本文是接着上一篇深度学习之 10 卷积神经网络3_水w的博客-CSDN博客

目录

卷积神经网络

1 卷积基本操作

◼卷积运算:定义卷积运算

◼ 构造卷积层:将卷积运算封装成卷积层

◼ 卷积的应用:卷积用来边缘检测

◼ 反向传播训练卷积核

2 填充和步幅

 ◼ 实现填充和步幅

 ◼ 实现多输入通道

 ◼ 实现多输出通道

3 池化层

 ◼  最大池化

 ◼ 平均池化

 ◼  自定义池化

4 卷积神经网络模型 CIFAR-10数据集分类任务

 ◼  大致模型结构: 

 ◼  2种方案实现:自定义卷积层和 torch.nn.Conv2d

 ◼  定义训练和测试函数

 ◼  读取数据

 ◼  2种方案实现结果:自定义卷积层和 torch.nn.Conv2d


卷积神经网络

1 卷积基本操作

卷积运算:定义卷积运算

 

◼ 构造卷积层:将卷积运算封装成卷积层

 ◼ 卷积的应用:卷积用来边缘检测

给定一个6*8的图像X ,中间4列为黑(0),其余为白(1)

 

给定卷积核K  =(1,-1),将卷积核在这个图片上进行卷积运算。

卷积的输出有一列是全1的(白和黑的一个边缘),还有一列是全-1的(黑和白的一个边缘),那么通过这样,我们就相当于是把原始图片的边缘检测出来了,检测出了边缘的颜色变化。

 

◼ 反向传播训练卷积核

 

填充和步幅

 ◼ 实现填充和步幅

输入X的大小是8x8的,通过填充和步幅之后,输出的Y是4x4的。 

 ◼ 实现多输入通道

 

  ◼ 实现多输出通道

 

3 池化层

 ◼  最大池化

 

 ◼ 平均池化

 

 ◼  自定义池化

卷积神经网络模型 CIFAR-10数据集分类任务

 ◼  大致模型结构: 

 

  ◼  2种方案实现:自定义卷积层和 torch.nn.Conv2d

 

 ◼  定义训练和测试函数

有了模型之后,我们定义一下训练和测试函数。

  ◼  读取数据

刚才我们已经完成了整个模型的搭建过程,接下来就是要把我们的数据集进行加载, 

  ◼  2种方案实现结果:自定义卷积层和 torch.nn.Conv2d

  ◼  PyTorch封装卷积实验结果:跑了100轮

随着模型的训练,我们可以发现训练集上的曲线不断下降,从准确率而言,以一个比较稳定的方式下降,说明模型具备了一定的学习能力。但是测试集上的曲线下降了一段时间之后就不怎么下降了,甚至有的时候上升,比较抖动,这说明模型接近过拟合了。

一般情况下,loss曲线都没有想象中的那么光滑,也就是说我们设计的模型都不是比较完美的,肯定会有缺陷,从而导致各种各样的结果,这时我们就需要分析导致结果产生的可能性。

举报

相关推荐

0 条评论