★tensorflow中“卷积”的深度解析

如题所述

第1个回答  2022-07-13

(1)单个独立卷积核的通道数=输入图像的通道数(输入图像决定);
(2)独立卷积核的个数=输出图像的通道数(用户决定)。

在描述卷积核时,“ 卷积核通道数 ”这个概念必须搞清楚,是指“ 单个独立卷积核的通道数 ”,还是指 独立卷积核的个数(输出通道数)
例:
假如输入图像的规模为 32×32×128 ,即输入通道数为128;
那么根据前面(1)可知单个卷积核的通道数也是128,即卷积核尺寸应该为: n×n×128 (n通常为3、5、7等)。
假如用256个这样的卷积核对输入进行卷积,则最后得到的输出图像尺寸为(根据前面(2)): (32-n+1)×(32-n+1)×256 ,即输出图像有256个通道(一个卷积核得到一个输出结果,也就是一个通道,相当于把原来只有128层的图像,扩展到了256层)。
可见,本次所有卷积核尺寸(或者说卷积核的总参数个数)是: n×n×128×256
需要注意的是, 很多时候在描述卷积核时,通常会忽略单个卷积核的通道数,而保留了卷积核个数 ,如上面的总卷积核简写为: n×n×256 ,省略了128,这么写是有道理的,因为这4个参数中128这个参数是由输入图像的通道数决定的,而其他三个参数则是由用户决定的。
因此在解读卷积核尺寸时,必须搞清楚,第三个参数是输入通道数还是卷积核个数。判断标准就是前面的(1)和(2)两点结论。

图片通道channel :通常jpg等彩色图片由R、G、B三个图层构成,每个图层实际上就是一个二维矩阵,也就是所谓的一个通道,因此一个彩色图片通常有3个通道,而一个黑白图片就只有一个通道。
tensorfllow中的“输入通道in_channels”:输入图像的通道数。
tensorfllow中的“输出通道out_channels”:输出图像的通道数。

最初输入的图片样本的 channels ,取决于图片类型,比如RGB;
卷积操作完成后输出的 out_channels ,取决于卷积核的数量。此时的 out_channels 也会作为下一次卷积时的卷积核的 in_channels;
卷积核中的 in_channels ,就是上一次卷积的 out_channels ,如果是第一次做卷积,就是输入本图片的 channels 。

tf.nn.conv2d()是TensorFlow里面实现卷积的函数,其调用方式如下:

下图展示了对一张3通道jpeg图片进行两次连续卷积操作的过程:

输出结果:

https://www.cnblogs.com/welhzh/p/6607581.html
https://www.jianshu.com/p/abb7d9b82e2a
https://www.imooc.com/article/details/id/29525
https://cloud.tencent.com/developer/article/1341522
https://www.cnblogs.com/billux/p/9072173.html

相似回答