zoukankan      html  css  js  c++  java
  • 动手学深度学习 | 经典卷积神经网络LeNet | 21

    LeNet

    上面是LeNet的结构示意图。

    模型定义

    net = nn.Sequential(
    	# 这里输出是28*28,所以要padding=2,填充为32*32
        nn.Conv2d(1, 6, kernel_size=5, padding=2), nn.Sigmoid(),
        nn.AvgPool2d(kernel_size=2, stride=2),
        nn.Conv2d(6, 16, kernel_size=5), nn.Sigmoid(),
        nn.AvgPool2d(kernel_size=2, stride=2),
        nn.Flatten(),
        nn.Linear(16 * 5 * 5, 120), nn.Sigmoid(),
        nn.Linear(120, 84), nn.Sigmoid(),
        nn.Linear(84, 10)) # 最后输出10个概率
    

    代码

    使用LeNet来在Fashion-Mnist数据集上进行训练。

    QA

    1. 池化和卷积是不是更适合图像这类数据,而对于时序性数据(做分类)是不是不适用这类数据?

    后面会将一个使用conv-1d来进行文本分类的案例。

    至于要不要使用池化,其实没有确定答案,可以试,因为使用了池化也没有带来什么坏处。

    1. LeNet的第二个卷积层通道数增加到了16,这意味信息被放大了吗?

    图片信息肯定是要压缩的,一般来说,就是卷积图片的高宽减半,然后通道增加一倍。(实际信息没有被放大,因为深度学习模型本质就是在压缩信息)

    可以看到以下卷积神经网的模型变化,长宽是在不断的缩小的,通道数在不断增多,一个通道可以认为是一个模式,也就可以认为被压缩的图片,被加入新的识别模式当中

    卷积:高宽是一直在减少的,通道是一直在增加的,现在的卷积神经网络,高宽会变成1,通道会变成上千。

    1. 池化层一般用max还是avg,用max的话会不会损失很多信息?

    用max的意思是说只关心最大的那个信号量,也就是关系那个pattern是否出现了,如果出现了它的值就会很大,那么就把这个最大值拎出来就行了。(多通道输出,对应多个核)

    max不见得比avg损失信息多,max其实比avg训练起来更好。

    1. 课程网站有个练习是将sigmoid替换为relu,是个sigmoid全替换为relu后模型基本不收敛,有什么原因吗?

    不收敛的原因是因为学习率过大。

    在这里插入图片描述

    然后课程中给定sigmoid给到0.9的学习率其实给大了..

    1. 图像识别出来的特征,颜色可以打印出来吗?或者怎么去寻找网络到底学习了什么?

    这个是可以打印出来的,有一个网站在做CNN 的可视化展示。

    CNN Explainer,可以学习,直观感受CNN是如何工作的。

    1. 目前的卷积神经网络或其他深度学习是不是都需要较多的训练数据,如果训练数据体量很小是否不适合深度学习?是否有无监督/或小训练集的深度学习?

    其实现在深度学习不需要很多数据集,我们后面会讲一个微调。

    现在的深度学习,因为我们有很多在大量的数据集上训练好的模型,我们可以做到在真实的训练不需要训练样本,或者很少的训练样本就做的很好了。

    我们这里讲的是从零开始学习,但是真实的应用不会真的从零开始的。

  • 相关阅读:
    讲课专用——线段树——最长上升子序列
    讲课专用——线段树——最长连续空位
    讲课专用——线段树——BSS
    求背景图
    致备战noip2018的勇士
    TNS-12547 Linux Error: 104: Connection reset by pe (转载)
    清理Oracle安装目录里的一些日志信息
    tmp_table_size
    11gr2 alert日志中报TNS-12535 TNS-00505原因及解决方法 (转载)
    systemstate dump 介绍
  • 原文地址:https://www.cnblogs.com/Rowry/p/15338161.html
Copyright © 2011-2022 走看看