• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
ixxoM
博客园    首页    新随笔    联系   管理    订阅  订阅
第三次作业_黄可

一、视频学习

卷积神经网络的基本应用:分类、检索、检测、分割。

深度学习三部曲:step1:搭建神经网络结构;step2:找到一个合适的损失函数;step3:找到一个合适的优化函数,更新参数。

全连接网络处理图像的问题:参数太多导致过拟合。

卷积神经网络的解决方式:局部关联,参数共享。

卷积:对两个实变函数的一种数学操作。

卷积神经网络(CNN)由输入层、卷积层、激活函数、池化层、全连接层组成,即INPUT(输入层)-CONV(卷积层)-RELU(激活函数)-POOL(池化层)-FC(全连接层),其中卷积层用来进行特征提取,池化层对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征,全连接层连接所有的特征,将输出值送给分类器。

遇到的问题:1.池化是否可理解为过滤“杂质”、保留关键信息?那么如何降低池化提取特征的误差呢?2.“局部关联,参数共享”的含义?3.如何选择合适的损失函数?如何确定其是否合适?

二、代码练习

2.1 MNIST数据集分类

很好奇这两行代码的含义:

transforms.ToTensor(),

transforms.Normalize((0.1307,),(0.3081,))

查了一下CSDN,解释为ToTensor()能够把灰度范围从0-255变换为0-1之间,而后面的Normalize()是对每个通道执行image=(image-mean)/std,其中0.1307和0.3081是mnist数据集的均值和标准差,因为mnist数据集都是灰度图,所以图像的通道数只有一个,因此均值和标准差都各一个。

 

 

 稍微修改了原代码的数据,显示了数据集中的40张图。

在小型全连接网络上训练:

 

 

 可以看到精确度为88%

在卷积神经网络上训练:

 

 

 可以看到精确度为95%

打乱像素顺序后在全连接网络上训练与测试:

 

 

 可以看到精确度为89%,相较之前没有明显变化。

同理,在卷积神经网络上训练和测试:

 

 

 精确度为80%,有了显著的下降。

造成两者区别的原因在于卷积神经网络会利用像素的局部关系,但是打乱顺序后,这些像素间的关系将无法得到利用。

2.2 CIFAR10数据集分类

训练网络:

 

 

 从测试集中取出八张图片:

 

 把图片输入模型:

 

 

 可以看出有一张图片识别错了。

网络在整个数据集上的表现:

 2.3 使用VGG16对CIFAR10分类

 

 

 这里出现了错误,经研究和咨询,发现是上一段代码有问题。

 

 

 这里定义self.cfg在VGG内部,其实应该在外部;图像大小应该是512。

关于梯度归零:

 

 网络训练:

 

 测试精确率:

 

 可以看到,精确率提升至83.24%。

posted on 2021-10-15 21:51  ixxoM  阅读(80)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3