点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

译者|VK

来源|Towards Data Science

即使我们从理论上理解了卷积神经网络,在实际进行将数据拟合到网络时,很多人仍然对其网络的输入和输出形状(shape)感到困惑。本文章将帮助你理解卷积神经网络的输入和输出形状。

让我们看看一个例子。CNN的输入数据如下图所示。我们假设我们的数据是图像的集合。

输入的形状

你始终必须将4D数组作为CNN的输入。因此,输入数据的形状为(batch_size,height,width,depth),其中第一维表示图像的batch大小,其他三个维表示图像的各个属性,即高度,宽度和深度。深度就是色彩通道的数量。例如,RGB图像的深度为3,而灰度图像的深度为1。

输出形状

CNN的输出也是4D数组。其中batch大小将与输入batch大小相同,但是图像的其他3个尺寸可能会根据滤波器(filter) ,内核大小(kernel size)和填充值(padding)而变化。

让我们看一下下面的代码片段。

不要在这里被input_shape参数欺骗,以为输入形状是3D,但是在进行训练时必须传递一个4D数组,该数据的形状应该是(batch_size,10,10,3)。由于input_shape参数中没有batch值,因此在拟合数据时可以采用任何batch大小。

而且正如你所见,输出的形状为(None,10,10,64)。第一个维度表示batch大小,目前为"None"。因为网络事先不知道batch大小。拟合数据后,将使用拟合数据时给出的batch大小来代替"None"。

让我们看看另一个代码片段。

在这里,我将input_shape参数替换为batch_input_shape。顾名思义,此参数将事先提供batch大小,并且在拟合数据时你无法提供任何其他batch大小。例如,在本例你必须用batch大小为16的数据来拟合网络。

你可以从上图看到输出形状的batch大小是16而不是None。

在卷积层上附加全连接(Dense)层

我们可以简单地在另一个卷积层的顶部添加一个卷积层,因为卷积的输出维度数与输入维度数相同。

通常,我们在卷积层的顶部添加Dense层以对图像进行分类。但是,Dense层需要形状为(batch_size,units)的数据。卷积层的输出是4D的数组。因此,我们必须将从卷积层接收的输出的尺寸更改为2D数组。

我们可以通过在卷积层的顶部插入一个Flatten层来做到这一点。Flatten层将3维图像变形成一个维。现在我们得到一个2D形状的数组(batch_size,squashed_size),这是Dense层需要的输入形状。

汇总

  • 你始终必须将形状为(batch_size, height, width, depth)的4D数组输入CNN。

  • CNN的输出数据也是形状(batch_size, height, width, depth)的4D数组。

  • 要在CNN层的顶部添加一个Dense层,我们必须使用keras的Flatten层将CNN的4D输出更改为2D。

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

理解卷积神经网络中的输入与输出形状 | 视觉入门相关推荐

  1. xml文件 卷积神经网络_理解卷积神经网络中的输入与输出形状(Keras实现)

    即使我们从理论上理解了卷积神经网络,在实际进行将数据拟合到网络时,很多人仍然对其网络的输入和输出形状(shape)感到困惑.本文章将帮助你理解卷积神经网络的输入和输出形状. 让我们看看一个例子.CNN ...

  2. 如何理解卷积神经网络中的通道(channel)

    在卷积神经网络中我们通常需要输入 in_channels 和 out_channels ,即输入通道数和输出通道数,它们代表什么意思呢?本文将给出一个形象的理解. 对于通道的理解可以参考下面的这篇文章 ...

  3. 【TensorFlow】TensorFlow从浅入深系列之十二 -- 教你深入理解卷积神经网络中的池化层

    本文是<TensorFlow从浅入深>系列之第12篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维 ...

  4. 【TensorFlow】TensorFlow从浅入深系列之十一 -- 教你深入理解卷积神经网络中的卷积层

    本文是<TensorFlow从浅入深>系列之第11篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维 ...

  5. 理解卷积神经网络中的自注意力机制

    作者 | Shuchen Du 编译 | ronghuaiyang 转自 | AI公园 导读 计算机视觉中的编解码结构的局限性以及提升方法. 卷积神经网络(CNN)广泛应用于深度学习和计算机视觉算法中 ...

  6. 如何理解卷积神经网络中的1*1卷积

    原文:http://blog.csdn.net/chaipp0607/article/details/60868689 我们都知道,卷积核的作用在于特征的抽取,越是大的卷积核尺寸就意味着更大的感受野, ...

  7. 收藏 | 理解卷积神经网络中的自注意力机制

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨Shuchen Du.ronghuaiyang(译) ...

  8. 【CNN】理解卷积神经网络中的通道 channel

    在深度学习的算法学习中,都会提到 channels 这个概念.在一般的深度学习框架的 conv2d 中,如 tensorflow .mxnet ,channels 都是必填的一个参数. channel ...

  9. 如何理解卷积神经网络中的权值共享

    权值共享这个词最开始其实是由LeNet5模型提出来,在1998年,LeCun发布了LeNet网络架构,就是下面这个: 虽然现在大多数的说法是2012年的AlexNet网络是深度学习的开端,但是CNN的 ...

最新文章

  1. 今天开始搞CentOS 7
  2. 开发工具Drawscript
  3. 玩转动态编译 - 高级篇:一,IL访问静态属性和字段
  4. Linux/Android多点触摸协议
  5. 拆!对比详解 Flutter Widget 和 CSS,你关心的布局原理都在这儿了
  6. 郑州百知面试题 SSM试题三
  7. sublime text的dockerfile语法高亮插件
  8. H5页面随机数字键盘支付页面
  9. Bash脚本教程之变量
  10. 刷新echart控件
  11. 在 Chrome 控制台可以玩的两个骚操作,你知道吗?
  12. 中国水胶体敷料行业市场供需与战略研究报告
  13. 智能家居无线系统为代表的Zigbee和Z-Wave协议的介绍,有线和无线的各自优势?
  14. Hbase的过滤器分类
  15. 使用pyecharts遇到的坑(去掉地图标识小红点)!
  16. java -version 自动被切换的问题 : C:\ProgramData\Oracle\Java\javapath;
  17. vs2010中的Resource View和Class View都为空的有效解决办法
  18. 【CISSP备考】第七章-安全运营
  19. db与redis一致性解决策略:延时双删
  20. 让iis支持二级域名泛解析

热门文章

  1. LatentFusion:华盛顿大学与英伟达联合提出6D姿态估计新方法
  2. 如何在一场面试中展现你对Python的coding能力?| 技术头条
  3. 看动画轻松理解“递归”与“动态规划”
  4. 陆奇“入驻” YC,开启新征程
  5. 科大讯飞拟募资36亿,要搞什么大事?
  6. 以后配置Nginx 用这款神器!
  7. IDEA 这样配置注释模板,让你高出一个逼格
  8. 七个开源的 SpringBoot 前后端分离项目,Star过千,快去收藏夹吃灰吧!
  9. 终于明白 Java 为什么要加 final 关键字了!
  10. 数据库分库分表,何时分?怎样分?