如果我有一个卷积神经网络,输入维度会改变参数的数量吗?如果是,为什么?如果过滤器的大小和长度仍然相同,网络中的参数数量如何增加?
如果输入维数增加,卷积神经网络中的参数数量会增加吗?
人工智能
卷积神经网络
过滤器
权重
2021-11-18 10:44:30
1个回答
如果我有一个卷积神经网络,输入维度会改变参数的数量吗?如果是,为什么?
如果卷积神经网络 (CNN)仅使用卷积层,则参数数量不会随着空间维度的增加而增加 (和) 的输入。这是 CNN 的优势之一!
原因很简单:卷积层的参数是内核(又名过滤器),它们通常具有固定的维度,并且可以应用于不同空间维度的输入,前提是使用了必要的填充。但是请注意,填充可以创建更大的特征图,但特征图不是神经网络的参数:它们是卷积层的输出。当您看到 CNN 的图表时,这可能会让您感到困惑,因为您会看到更大的特征图,并且您可能会认为参数的数量会增加。
这是一个 TensorFlow 2(和 Keras)程序,它表明参数的数量不会随着和输入的维度。
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 的参数也会增加,但这通常是固定的(对于 RGB 图像或对于灰度图像)。原因也很简单:第一个卷积层(连接到输入层)中的内核将具有与输入深度相同的深度。
如果你的 CNN 也有全连接层,那么参数的数量也取决于输入的维度。这是因为全连接层的参数取决于特征图的数量和维度(还记得全连接层之前的展平层吗?),正如我所说,它可以作为输入的函数而增加。
如果您不想使用全连接层,您可能想尝试全卷积网络(FCN),它不使用全连接层,但仍可用于解决分类(和其他)任务。