如果输入维数增加,卷积神经网络中的参数数量会增加吗?

人工智能 卷积神经网络 过滤器 权重
2021-11-18 10:44:30

如果我有一个卷积神经网络,输入维度会改变参数的数量吗?如果是,为什么?如果过滤器的大小和长度仍然相同,网络中的参数数量如何增加?

1个回答

如果我有一个卷积神经网络,输入维度会改变参数的数量吗?如果是,为什么?

如果卷积神经网络 (CNN)使用卷积层,则参数数量不会随着空间维度的增加而增加 (X是的) 的输入。这是 CNN 的优势之一!

原因很简单:卷积层的参数是内核(又名过滤器),它们通常具有固定的维度,并且可以应用于不同空间维度的输入,前提是使用了必要的填充但是请注意,填充可以创建更大的特征图,但特征图不是神经网络的参数:它们是卷积层的输出。当您看到 CNN 的图表时,这可能会让您感到困惑,因为您会看到更大的特征图,并且您可能会认为参数的数量会增加。

这是一个 TensorFlow 2(和 Keras)程序,它表明参数的数量不会随着X是的输入的维度。

import tensorflow as tf

input_shapes = [(2 * k, 2 * k, 3) for k in range(2, 6)]

for input_shape in input_shapes:
    model = tf.keras.Sequential()
    model.add(tf.keras.layers.Input(shape=input_shape))
    model.add(tf.keras.layers.Conv2D(10, kernel_size=3, use_bias=True))
    model.summary() # The total number of parameters is always 280

如果增加每个内核的大小和内核的数量,卷积层的参数可以增加,但这并不一定取决于输入。

如果增加输入的深度,CNN 的参数也会增加,但这通常是固定的(3对于 RGB 图像或1对于灰度图像)。原因也很简单:第一个卷积层(连接到输入层)中的内核将具有与输入深度相同的深度。

如果你的 CNN 也有全连接层,那么参数的数量也取决于输入的维度。这是因为全连接层的参数取决于特征图的数量和维度(还记得全连接层之前的展平层吗?),正如我所说,它可以作为输入的函数而增加。

如果您不想使用全连接层,您可能想尝试全卷积网络(FCN),它不使用全连接层,但仍可用于解决分类(和其他)任务。