理解卷积神经网络中的channel

在一般的深度学习框架的 conv2d 中,如 tensorflow、mxnet,channel 都是必填的一个参数

在 tensorflow 中,对于输入样本中 channels 的含义,一般是RGB图片,channels的数量是3(R、G、B)。而灰度图是的channels是1;

mxnet 中,一般channels的含义是:每个卷积层中卷积核的数量。

为了更好的理解,下面举个例子。图片来自 吴恩达老师的深度学习课程

假设有一个 6x6x3的图片样本,使用 3x3x3的卷积核。此时输入的 channels 为3。而卷积核中的 in_channels 与需要进行卷积操作的数据channels一致

理解卷积神经网络中的channel

卷积:27个数字分别与样本对应相乘,在进行求和,得到第一个结果。依次进行,最终得到 4x4 的结果

理解卷积神经网络中的channel

由于只有一个卷积核,最终得到的结果是 4x4x1,out_channels为1

在实际应用中,都会使用多个卷积核。这里如果再加一个卷积核,就会得到 4x4x2 的结果

理解卷积神经网络中的channel

总结一下,把上面提到的channels分为三种:

  1. 最初图片的输入样本channels,取决于图片类型,比如RGB;

  2. 卷积操作完成后输出的 out_channels,取决于卷积核的数量。此时的 out_channels 也会作为下一次卷积时的 in_channels;

  3. 卷积核中的 in_channels,刚刚2中已经说了,就是上一次卷积的out_channels,如果是第一次做卷积,就是1中样本图片的 channels

其实在CNN中,搞清楚每一层的传递关系,主要就是height、width的变化情况,以及 channels 的变化情况

在看看 tensorflow 中 tf.nn.conv2d 的 input 和 filter 这两个参数

input : [batch,in_height,in_width,in_channels]

filter : [filter_height,filter_width,in_channels,out_channels]

理解卷积神经网络中的channel

参考地址:

https://blog.csdn.net/sscc_learning/article/details/79814146

上一篇:实现文本框默认灰色文字,点击消失,如果没输入内容可再返回原来的灰色文字(js版)


下一篇:shell 中各种符号的含义