1.卷积神经网络介绍

卷积神经网络(Convolutional Neural Networks)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一。

2.卷积神经网络的结构

卷积神经网络一般包含如下几种结构,输入层,卷积层,池化层,激活函数,全链接层,输出层。

2.1 输入层

输入层简单说就是一个矩阵,该矩阵表示输入图片的像素点

2.2 卷积层

卷积层是卷积神经网络的关键所在,但是理解起来很简单,首先要明白几个概念,input_size表示输入的矩阵的大小,filter_size表示卷积核的大小,stride表示步长,padding表示填充。根据下图,我们来详细的讲一下以上的几个概念分别是如何使用的:

注意第一列蓝色的矩阵为输入层,第二列第三列红色的矩阵为卷积层最后一列绿色的矩阵为输出层
首先蓝色的矩阵表示输入层,其中input_size也就是5(即5*5*3的矩阵),padding为1,表示周围添加一圈0作为填充,因此整个输入层变为7*7*3的矩阵。
红色的矩阵表示过滤器,w0表示第一个过滤器,w1表示第二个过滤器,那么过滤器的大小也就是前面说的filter_size是3(即3*3*3的矩阵)。
到这里不难发现其实上图就是将一个7*7*3的矩阵展开,过滤器也一样展开。
那么输出层是如何计算的呢?其实就是对应位置相乘最后求和即可,按照上图,首先输入层的三维分别记做x[,,0],x[,,1],x[,,2],那么第一个绿色矩阵的第一个元素的输出结果就是过滤器w0第一次的卷积结果,将每一层过滤器映射在每一层输入层上的结果分别记为sum_w0_00, sum_w0_01,sum_w0_02
sum_w0_00 = 0*1 + 0*1 + 0*1 + 0*(-1) + 2*1 + 1*0 + 0*1 + 2*1 + 1*1 = 5
sum_w0_01 = 0*0 + 0*(-1) + 0*0 + 0*0 + 1*0 + 2*1 + 0*1 + 1*0 + 0*0 = 2
sun_w0_02 = 0*0 + 0*0 + 0*(-1) + 0*(-1) + 1*0 + 2*0 + 0*(-1) + 0*(-1) + 0*0 = 0
因此第一个绿色矩阵的第一个元素也就等于sum_w0_00 + sum_w0_01 + sum_w0_02 + b0 = 8
剩下的计算方式与前面一致,由于stride为2,所以过滤器每次向右滑动两个单位即可。
最后对于计算输出层的大小有如下公式:
o u t p u t _ s i z e = i n p u t _ s i z e + 2 ∗ p a d d i n g − f i l t e r _ s i z e s t r i d e + 1 output\_size=\frac{input\_size + 2*padding-filter\_size}{stride} + 1 output_size=strideinput_size+2∗padding−filter_size​+1
因此根据上面的例子output_size = (5 + 2 * 1 - 3) / 2 + 1 = 3,因此最后输出的矩阵为3*3,由于我们这里使用了两个filter因此最终结果为3*3*2
注意事项:

  • 过滤器的通道数必须要和输入的通道数一样
  • 假设输入图片大小是224*224*3,过滤器大小是3*3*3,使用64个过滤器,那么最后的输出结果为112*112*64
Pytorch相关代码
torch.nn.Conv2d(in_channels: int, # 输入的通道数out_channels: int, # 输出通道数kernel_size: _size_2_t, # 卷积核的大小stride: _size_2_t = 1, # 步长(默认为1)padding: _size_2_t = 0, # 填充(默认为0)groups: int = 1,bias: bool = True,padding_mode: str = 'zeros')

2.3 池化层

池化层分为两种,分别为平均池化和最大池化,最大池化目前用的更多一些,简单的说和卷积很类似,卷积是点乘求和,最大池化则是点乘求最大值,平均池化则是点乘求平均。

Pytorch相关代码

最大池化

torch.nn.MaxPool2d(kernel_size: _size_any_t, # 池化窗口的大小stride: Optional[_size_any_t] = None, # 步长padding: _size_any_t = 0) # 填充(默认为0)

平均池化

torch.nn.AvgPool2d(kernel_size: _size_any_t, # 池化窗口的大小stride: Optional[_size_any_t] = None, # 步长padding: _size_any_t = 0) # 填充(默认为0)

2.4 全链接层

全链接层就是将特征图转换成一个列向量

【深度学习】超级简单的卷积神经网络(CNN)相关推荐

  1. 花书+吴恩达深度学习(十三)卷积神经网络 CNN 之运算过程(前向传播、反向传播)

    目录 0. 前言 1. 单层卷积网络 2. 各参数维度 3. CNN 前向传播反向传播 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十)卷积神经网络 ...

  2. 花书+吴恩达深度学习(十一)卷积神经网络 CNN 之池化层

    目录 0. 前言 1. 最大池化(max pooling) 2. 平移不变形 3. 其他池化函数 4. 卷积和池化作为一种无限强的先验 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常 ...

  3. 花书+吴恩达深度学习(十)卷积神经网络 CNN 之卷积层

    目录 0. 前言 1. 2D 图像卷积 2. 3D 图像卷积 3. 过滤器(核函数) 4. 过滤器应用于边缘检测 5. padding 填充 6. stride 步长 7. 使用卷积的动机 8. 1乘 ...

  4. 水很深的深度学习(四)——卷积神经网络CNN

    参考资料: 1.水很深的深度学习-CNN 2.卷积神经网络超详细介绍_呆呆的猫的博客-CSDN博客_卷积神经网络 3.大话卷积神经网络CNN(干货满满)-CSDN博客 卷积神经网络的概念 计算机视觉和 ...

  5. 【深度学习】深入理解卷积神经网络(CNN)

    CNN Author:louwill From:深度学习笔记 本文将为大家介绍一种用途更为广泛.性能更加优越的神经网络结构--卷积神经网络(Convolutional Neural Network, ...

  6. 深度学习【5】卷积神经网络CNN(2)

    文章目录 一.卷积的变种 1.分组卷积 (1).定义 (2).优势 (3).应用场景 2.转置卷积 (1).定义 (2).优势 (3).具体步骤 (4).应用场景 3.空洞卷积 (1).定义 (2). ...

  7. 深度学习时间序列预测:卷积神经网络(CNN)算法构建单变量时间序列预测模型预测空气质量(PM2.5)+代码实战

    深度学习时间序列预测:卷积神经网络(CNN)算法构建单变量时间序列预测模型预测空气质量(PM2.5)+代码实战 神经网络(neual networks)是人工智能研究领域的一部分,当前最流行的神经网络 ...

  8. 学习笔记:深度学习(3)——卷积神经网络(CNN)理论篇

    学习时间:2022.04.10~2022.04.12 文章目录 3. 卷积神经网络CNN 3.1 卷积神经网络的概念 3.1.1 什么是CNN? 3.1.2 为什么要用CNN? 3.1.3 人类的视觉 ...

  9. 深度学习笔记其五:卷积神经网络和PYTORCH

    深度学习笔记其五:卷积神经网络和PYTORCH 1. 从全连接层到卷积 1.1 不变性 1.2 多层感知机的限制 1.2.1 平移不变性 1.2.2 局部性 1.3 卷积 1.4 "沃尔多在 ...

最新文章

  1. HTTP 毛病 401.1 - 未经授权:接见因为凭证无效被谢绝
  2. c语言函数的可选性自变量
  3. css之其它技巧和经验列表
  4. V8 —— 你需要知道的垃圾回收机制
  5. java注解简单实例
  6. java 的对象强制转换后的调用
  7. java httpclient单例_java-8 – CloseableHttpClient.execute每隔几周就会冻结一次,尽管超时...
  8. 某些专题页面内容很好,但很长时间都不被及时收录的可能原因之一
  9. ISE应用入门的一些问题
  10. 【ICCV2019】完整论文列表
  11. java项目_值得学习和练手的Java企业级开源项目,强烈推荐!
  12. Windows下编译DCMTK
  13. STM32|HSE/HSI调频
  14. 2,服务通讯C++与python
  15. SLAM导航技术原理
  16. C语言无符号数赋值为负数时的%d%u输出问题解释
  17. 【广州芯享家】服务器维护过程中,你需要了解的5个小常识
  18. LeetCode(779):第K个语法符号 K-th Symbol in Grammar(Java)
  19. 打开门,推开希望之窗
  20. code函数oracle列子,Oracle 8 的函数介绍_oracle

热门文章

  1. 小技巧绕过Sina Visitor System(新浪访客系统)
  2. 笔记之Wishart 矩阵和特征值变量的积分变换
  3. cocos2dx 苹果5分辨率 适配错误
  4. 传奇手游漏洞获取gm权限_传奇私服倚天版本刷GM权限漏洞是什么?
  5. 金太阳联考2021高考成绩查询,广东金太阳高三联考2021成绩查询
  6. 大数据早报:合肥公证机构启用人脸识别系统;阿里AI时尚助手进驻全国13家门店 (11.16)
  7. 空调开高一度觉得热、开低一度觉得冷的问题原因,DIY外加温控器解决
  8. 宏基因组数据二+三代混合组装并计算Read对Contig的深度
  9. openCV常用網站
  10. 数字图像处理Python语言实现-图像滤波-Log-Gabor滤波