学习笔记:CNN

这是我看过讲解CNN最详细,最清楚的视频,特色是理论和pytorch代码相结合:刘二大人的视频

首先需要从整体上理解CNN网络

CNN
  • 图像输入计算机就是一个矩阵
  • 将一个图像(input),通过卷积(Convolution)、下采样(Subsampling、又叫池化Pooling,)、卷积和池化操作可以进行多次,然后接入全连接网络进行分类判断。
  • 图像的输入是通道 * 宽 * 高:channel * width * height ,即C * W * H
  • 黑白图像的输入channel是1,彩色图片的输入channel是3


    彩色图像有三个输入channel

理解卷积的计算过程

我们从单通道输入开始

卷积计算
  • Kernel是我们常说的卷积核,用卷积核在输入图像上滑动,通过数字乘法,计算一个输出。
  • 最后我们从1 * 5 * 5得到了1 * 3 * 3(这里的1就是通道)
    得到单通道输出

单通道输入的计算已经清楚,那怎么计算多通道输入呢?

  • 简单来说就是用多个卷积核分别计算,然后求和
三通道的计算过程
  • 输入图像有三个channel,每个channle的尺寸为 5 * 5
  • 卷积核有三个channel,每个channel的尺寸为3 * 3
  • 输出只有一个channel,大小是3 * 3
    三通道输入,经过卷积,得到一通道输出
  • 简单的说我们就是将一个3 * 5 * 5 的输入通过一个3 * 3 * 3的卷积核,计算得到一个1 * 3 * 3的结果

那么如何输入n * W* H得到输出m * W * H?

多通道计算
  • 一个卷积核(filter)的大小是:通道 * 卷积宽* 卷积高
  • 每个卷积核的channel和输入数据的channel一致
  • 加入m个卷积核分别计算,就可以得到m个结果,然后将这m和结果拼接
  • 总结:卷积核的channel和输入channe保持一致,卷积核的数量和输出channel保持一致

padding

  • 就是给输入周围添加0,调整输出的大小


    padding

stride

  • 控制滑动时跳跃的距离


    stride

MaxPooling

  • 最大池化,就是找其中的最大值


    maxpooling
  • 还有一个avgPooling,即平均池化,就是计算平均值。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容