CNN卷积神经网络原理讲解+图片识别应用(两层)

https://blog.csdn.net/kun1280437633/article/details/80817129

写给初学者的深度学习教程之 MNIST 数字识别(一个CNN)

https://blog.csdn.net/briblue/article/details/80398369

深入理解卷积层,全连接层的作用意义

https://blog.csdn.net/m0_37407756/article/details/80904580

全连接层的作用主要就是实现分类

CNN中卷积层的计算细节

https://zhuanlan.zhihu.com/p/29119239

卷积层尺寸的计算原理

  • 输入矩阵格式:四个维度,依次为:样本数、图像高度、图像宽度、图像通道数
  • 输出矩阵格式:与输出矩阵的维度顺序和含义相同,但是后三个维度(图像高度、图像宽度、图像通道数)的尺寸发生变化。
  • 权重矩阵(卷积核)格式:同样是四个维度,但维度的含义与上面两者都不同,为:卷积核高度、卷积核宽度、输入通道数、输出通道数(卷积核个数)
  • 输入矩阵、权重矩阵、输出矩阵这三者之间的相互决定关系
    • 卷积核的输入通道数(in depth)由输入矩阵的通道数所决定。(红色标注)
    • 输出矩阵的通道数(out depth)由卷积核的输出通道数所决定。(绿色标注)
    • 输出矩阵的高度和宽度(height, width)这两个维度的尺寸由输入矩阵、卷积核、扫描方式所共同决定。计算公式如下。(蓝色标注)

* 注:以下计算演示均省略掉了 Bias ,严格来说其实每个卷积核都还有一个 Bias 参数。

标准卷积计算举例

以 AlexNet 模型的第一个卷积层为例,
- 输入图片的尺寸统一为 227 x 227 x 3 (高度 x 宽度 x 颜色通道数),
- 本层一共具有96个卷积核,
- 每个卷积核的尺寸都是 11 x 11 x 3。
- 已知 stride = 4, padding = 0,
- 假设 batch_size = 256,
- 则输出矩阵的高度/宽度为 (227 - 11) / 4 + 1 = 55

1 x 1 卷积计算举例

后期 GoogLeNet、ResNet 等经典模型中普遍使用一个像素大小的卷积核作为降低参数复杂度的手段。
从下面的运算可以看到,其实 1 x 1 卷积没有什么神秘的,其作用就是将输入矩阵的通道数量缩减后输出(512 降为 32),并保持它在宽度和高度维度上的尺寸(227 x 227)。

全连接层计算举例

实际上,全连接层也可以被视为是一种极端情况的卷积层,其卷积核尺寸就是输入矩阵尺寸,因此输出矩阵的高度和宽度尺寸都是1。

总结下来,其实只需要认识到,虽然输入的每一张图像本身具有三个维度,但是对于卷积核来讲依然只是一个一维向量。卷积核做的,其实就是与感受野范围内的像素点进行点积(而不是矩阵乘法)。

附:TensorFlow 中卷积层的简单实现

def conv_layer(x, out_channel, k_size, stride, padding):in_channel = x.shape[3].valuew = tf.Variable(tf.truncated_normal([k_size, k_size, in_channel, out_channel], mean=0, stddev=stddev))b = tf.Variable(tf.zeros(out_channel))y = tf.nn.conv2d(x, filter=w, strides=[1, stride, stride, 1], padding=padding)y = tf.nn.bias_add(y, b)y = tf.nn.relu(y)return x
  • 输入 x:[batch, height, width, in_channel]
  • 权重 w:[height, width, in_channel, out_channel]
  • 输出 y:[batch, height, width, out_channel]

CNN卷积神经网络原理与公式讲解相关推荐

  1. DeepLearning tutorial(4)CNN卷积神经网络原理简介+代码详解

    FROM: http://blog.csdn.net/u012162613/article/details/43225445 DeepLearning tutorial(4)CNN卷积神经网络原理简介 ...

  2. 【深度学习】5:CNN卷积神经网络原理

    前言:先坦白的说,深度神经网络的学习在一开始对我造成的困扰还是很大的,我也是通过不断地看相关的视频资料.文献讲解尝试去理解记忆.毕竟这些内容大多都是不可查的,我们看到的都只是输入输出的东西,里面的内部 ...

  3. cnn(卷积神经网络)比较系统的讲解

    本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep learning简介 [2]Deep Learning训练过程 [3]Deep Learning模型之 ...

  4. cnn输入层_一文掌握CNN卷积神经网络

    学习目录 阿力阿哩哩:深度学习 | 学习目录​zhuanlan.zhihu.com 我们在4.2节讲到了神经网络已经逐步成为人类智能生活的璀璨明珠,并介绍了全连接神经网络的整个训练过程,整个流程紧凑而 ...

  5. 脉冲神经网络原理及应用pdf_CNN卷积神经网络原理讲解+图片识别应用(附源码)...

    一.机器如何识图 先给大家出个脑筋急转弯:在白纸上画出一个大熊猫,一共需要几种颜色的画笔?--大家应该都知道,只需要一种黑色的画笔,只需要将大熊猫黑色的地方涂上黑色,一个大熊猫的图像就可以展现出来. ...

  6. 图卷积神经网络代码讲解,cnn卷积神经网络伪代码

    1.卷积神经网络通俗理解 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Ne ...

  7. CNN卷积神经网络—LeNet原理以及tensorflow实现mnist手写体训练

    CNN卷积神经网络-LeNet原理以及tensorflow实现minst手写体训练 1. LeNet原理 2.tensorflow实现Mnist手写体识别 1.安装tensorflow 2.代码实现手 ...

  8. TensorFlow 2.0 mnist手写数字识别(CNN卷积神经网络)

    TensorFlow 2.0 (五) - mnist手写数字识别(CNN卷积神经网络) 源代码/数据集已上传到 Github - tensorflow-tutorial-samples 大白话讲解卷积 ...

  9. 深度学习之CNN卷积神经网络

    详解卷积神经网络(CNN) 卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出 ...

最新文章

  1. App推荐 | Google Tasks
  2. erlang精要(14)-列表(1)
  3. [学习笔记]标记永久化
  4. linux shell 脚本 supress,《linux Shell 脚本攻略》进阶学习(第一部分)
  5. 下载加载linux下用vmware-mount挂载vmdk虚拟硬盘分区
  6. b站怎么删自己的专栏_麦当劳B站直播翻车,品牌B站营销到底应该怎么做?
  7. R 语言与简单的回归分析
  8. QT/C++高级编程(中)
  9. Windows--IOmeter测试网络
  10. 怎样给word插入页码,点击进来有惊喜
  11. 257套工业机器人SW设计3D图纸 焊接机械手/发那科ABB安川臂模型
  12. 多因子策略-APT模型
  13. java定义hashmap_Java用自定义的类型作为HashMap的key
  14. 【转载!!】一个用消息队列 的人,不知道为啥用 MQ,这就有点尴尬
  15. 浅谈38K红外发射接受编码(非常好)
  16. 2019年 支付宝集福攻略
  17. 主数据治理项目实施中存在的问题
  18. C语言猜数字游戏实现
  19. lftp和sftp区别联系
  20. QQ 信鸽 (iOS) 小试

热门文章

  1. 华为手机_text是什么文件_text函数怎么使用
  2. 微软模拟飞行10厦门航空涂装_《微软模拟飞行》好评如潮:无与伦比飞行体验...
  3. HTML基础教程笔记
  4. 磊科NW330 LINUX下驱动安装记
  5. 程序员用学位证吗_没有学位如何成为一名优秀的Java程序员
  6. 红黑树、b+树、b树、mysql索引详细剖析
  7. spring定时任务@Scheduled注解详解
  8. 互联网公司有哪些“逼死人”的制度?
  9. oculus vr开发_Oculus IndieCade VR Jam总结
  10. cuda编程与gpu并行计算(三):一个小demo了解cuda基本语法