gpt4 book ai didi

python - 了解 tf.layers.conv2d 的输入/输出张量

转载 作者:行者123 更新时间:2023-12-01 01:55:00 25 4
gpt4 key购买 nike

我试图理解 tf.layers.conv2d 执行的转换。

来自 TensorFlow 网站的 mnist 教程代码包含卷积层:

# Computes 64 features using a 5x5 filter.
# Padding is added to preserve width and height.
# Input Tensor Shape: [batch_size, 14, 14, 32]
# Output Tensor Shape: [batch_size, 14, 14, 64]
conv2 = tf.layers.conv2d(
inputs=pool1,
filters=64,
kernel_size=[5, 5],
padding="same",
activation=tf.nn.relu)

但是,我的期望是 32 个输入图像将乘以滤波器的数量,因为每个滤波器都应用于每个图像,以给出 [batch_sz, 14, 14, 2048]< 的输出张量。显然这是错误的,但我不知道为什么。转型如何进行? API 文档没有告诉我它是如何工作的。如果输入张量为[batch_size, 14, 14, 48],输出是什么?

最佳答案

我认为您可能对过滤器在这里的工作原理有一个小小的误解。 This introductionthis answer提供一些详细的解释。我发现简介中的卷积演示动画对于展示其工作原理非常有帮助。

这里的关键点是过滤器的工作原理。通常,卷积层有一组 K 滤波器(在您的示例中为 64 个)。对于每个过滤器,实际形状为 kernel_size + height_of_input (在您的示例中为 5x5x32)。这意味着一个过滤器将同时查看/应用 32 个 channel /图像,并给出一个结论/计算特征。因此,输出的深度/num_of_features 等于您的过滤器参数,而不是输入深度*过滤器。请查看this code了解用于计算的真实和最终内核。

因此,为了回答你的最后一个问题,[batch_size, 14, 14, 32][batch_size, 14, 14, 48] 的输出将始终您的设置为 [batch_size, 14, 14, 64]

关于python - 了解 tf.layers.conv2d 的输入/输出张量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50308951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com