Tensorflow conv2D函数如何更改输入层

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'

在使用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',
    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,我将检查它。