Tensorflow conv2D函数如何更改输入层
在使用Tensorflow编码的ResNet32网络中,输入大小为32 x 32 x 3,输出 图层为32 x 32 x 32。为什么使用32通道Tensorflow conv2D函数如何更改输入层,tensorflow,size,tensor,resnet,Tensorflow,Size,Tensor,Resnet,在使用Tensorflow编码的ResNet32网络中,输入大小为32 x 32 x 3,输出 图层为32 x 32 x 32。为什么使用32通道 tf.contrib.layers.conv2d( inputs, **num_outputs**, /// how to determine the number of channel to be used in my layer? kernel_size, stride=1, padding='SAME'
tf.contrib.layers.conv2d(
inputs,
**num_outputs**, /// how to determine the number of channel to be used in my layer?
kernel_size,
stride=1,
padding='SAME',
data_format=None,
rate=1,
activation_fn=tf.nn.relu,
normalizer_fn=None,
normalizer_params=None,
weights_initializer=initializers.xavier_initializer(),
weights_regularizer=None,
biases_initializer=tf.zeros_initializer(),
biases_regularizer=None,
reuse=None,
variables_collections=None,
outputs_collections=None,
trainable=True,
scope=None
)
首先感谢,输入中的
3
是表示输入图像是RGB(彩色图像),也称为彩色通道的数字,如果它是黑白图像,那么它应该是1(单色图像)
此输出中的32
表示您正在使用的神经元数量\功能数量\通道数量,因此基本上您用3种颜色和32个通道来表示图像。
这有助于学习更复杂和不同的图像特征集。例如,它可以使网络更好地学习边缘。通过指定stride=2
可以减小输入张量的空间大小,使输出张量的高度和宽度成为该输入张量的一半。这意味着,如果您的输入张量形状是(批次,32,32,3)
(3是RGB通道)到一个卷积层,该卷积层具有32个内核/过滤器,且stride=2
,则输出张量的形状将是(批次,16,16,32)
。或者,池也被广泛用于减少输出张量大小
通过叠加conv层学习层次表示的能力被认为是CNN成功的关键。在CNN中,随着我们深入,张量的空间大小减小,而通道数量增加,这有助于处理复杂目标对象外观的变化。这种空间大小的减少大大减少了所需的算术运算次数和计算时间,目的是提取有助于最终输出/决策的显著特征。但是,找到滤波器/内核/输出通道的最佳数量非常耗时,因此,人们遵循已验证的早期体系结构,例如VGG。谢谢您的回答,这样中间表示(层的输出)比输入图像大得多,我想做的是使其更小,我如何更改定义所用通道数的此参数,以及这是否会影响我网络的准确性,提前感谢。为了压缩图像,您需要使用TransposedConvolution
,已定义。感谢Rishabh,我将检查它。