博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【深度学习笔记】卷积的输入输出的通道、维度或尺寸变化过程
阅读量:2135 次
发布时间:2019-04-30

本文共 1531 字,大约阅读时间需要 5 分钟。

转载自

在这里插入图片描述

卷积层尺寸的计算原理

  • 输入矩阵格式:四个维度,依次为:样本数、图像高度、图像宽度、图像通道数

  • 输出矩阵格式:与输出矩阵的维度顺序和含义相同,但是后三个维度(图像高度、图像宽度、图像通道数)的尺寸发生变化。

  • 权重矩阵(卷积核)格式:同样是四个维度,但维度的含义与上面两者都不同,为:卷积核高度、卷积核宽度、输入通道数、输出通道数(卷积核个数)

输入矩阵、权重矩阵、输出矩阵这三者之间的相互决定关系

  • 卷积核的输入通道数(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×1卷积核来压缩通道数。
    在这里插入图片描述

全连接层计算举例

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

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

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

def conv_layer(x, out_channel, k_size, stride, padding):    in_channel = x.shape[3].value    w = 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]
你可能感兴趣的文章
用 Recursive Neural Networks 得到分析树
查看>>
RNN的高级应用
查看>>
TensorFlow-7-TensorBoard Embedding可视化
查看>>
一个隐马尔科夫模型的应用实例:中文分词
查看>>
轻松看懂机器学习十大常用算法
查看>>
一个框架解决几乎所有机器学习问题
查看>>
特征工程怎么做
查看>>
机器学习算法应用中常用技巧-1
查看>>
机器学习算法应用中常用技巧-2
查看>>
通过一个kaggle实例学习解决机器学习问题
查看>>
决策树的python实现
查看>>
Sklearn 快速入门
查看>>
了解 Sklearn 的数据集
查看>>
用ARIMA模型做需求预测
查看>>
推荐系统
查看>>
详解 TensorBoard-如何调参
查看>>
TensorFlow-11-策略网络
查看>>
浅谈 GBDT
查看>>
如何选择优化器 optimizer
查看>>
一文了解强化学习
查看>>