深度学习基础-卷积神经网络CNN+深度学习(无代码仅理解)

参考书籍:(找不到资源可以后台私信我)
《深度学习入门:基于Python的理论与实现 (斋藤康毅)》


CNN

概括

在这里插入图片描述
其中pooling层有时候会被省略,卷积层的输入输出图像称为特征图(feature map),即输入特征图和输出特征图。

卷积层

全连接层输入时输入的是1维的数据,多维数据需要被拉平,但卷积层可以保持形状不变。

卷积层进行的处理就是卷积运算、滤波器运算。滤波器相当于affine的weights,b可以用一个数值,这个值会加到所有数上。
在这里插入图片描述
可以看到,这样的维度是变了,那为了让最终结果仍然是4x4的,就必须要对输入数据进行填充,如下图,填充一圈0。
在这里插入图片描述
应用滤波器时,步幅(stride)指的是滤波器移动一次的距离。比如上面都是每次往右或者往下移动一格,所以步幅是1。
在这里插入图片描述
OH和OW应该是整数,如果是小数的话需要四舍五入或者报错。

如果是多维度的数据(比如三维,输入数据多了几张特征图/矩阵,这个几就是通道数),那么滤波器的通道数应该跟输入数据的通道数一致,而且每个通道的滤波器大小要一致。
在这里插入图片描述
如果希望得到多通道的结果,那么需要加滤波器,几个滤波器几个通道。下图还加了偏置。
在这里插入图片描述
批处理时,需要将数据保存为4维数据,按(batch_num, channel, height, width)的顺序保存。即将N次处理汇总成1次进行。

池化层

池化是缩小高、长方向上的运算。比如下图是max池化(步幅为2),就是选4x4里最大的值放入新矩形。
在这里插入图片描述
一般池化的窗口大小与步幅一致。图像识别领域经常使用Max池化,但也还有别的池化方式,比如Average(取矩形里平均值填入新矩形)。

池化层的特征:

  • 没有要学习的参数
  • 通道数不变
  • 对微小的偏差有鲁棒性

卷积层和池化层的实现技巧

在这里插入图片描述
imcol(input_data, filter_h, filter_w, stride=1, pad=0)
卷积层反向传播时,需要进行im2col的逆处理col2im

如果有多个卷积层,最开始的层可能对简单边缘有响应,接下来的层可能对纹理响应,再后面的可能对部件响应。随着层次加深,神经元理解的信息也越来越复杂。

LeNet:1998年提出,用于手写数字识别。AlexNet

深度学习

深度学习是加深了层的深度神经网络。

Data Augmentation 数据扩充:比如mnist数据集,将某些训练图像进行旋转和平移产生新图像以扩充训练集。还可以用裁剪、左右翻转、亮度变化、放缩等。

加深层的好处:

  1. 可以用更少的参数(小滤波器叠加)达到相近的效果
  2. 使学习更高效,即可以用更少的学习数据,因为每一层都学习一点点,相当于分解了问题

实践中经常会灵活应用使用ImageNet这个巨大的数据集学习到的权重数据,这称为迁移学习,将学习完的权重(的一部分)复制到其他神经网络,进行再学习(fine tuning)。比如,准备一个和VGG相同
结构的网络,把学习完的权重作为初始值,以新数据集为对象,进行再学习。迁移学习在手头数据集较少时非常有效。

GPU主要由NVIDIA和AMD两家公司提供。虽然两家的GPU都可以用于通用的数值计算,但与深度学习比较“亲近”的是NVIDIA的GPU。这是因为深度学习的框架中使用了NVIDIA提供的CUDA这个面向GPU计算的综合开发环境。cuDNN是在CUDA上运行的库,它里面实现了为深度学习最优化过的函数等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值