gpt4 book ai didi

python - Keras 中 Conv1D 层的输出大小

转载 作者:行者123 更新时间:2023-12-03 08:31:17 26 4
gpt4 key购买 nike

我试图理解应用于多个批处理(本例中为 3 个)2D 输入形状 (6x6) 的 1D 卷积层的输出。

以下代码的输出为(4, 10, 32)。对于前两个指数来说,这个答案非常简单。

  • (4) 我们插入 N 个示例,我们得到 N 个示例。
  • (8) 在 (10, 128) * (3, 1) 之间进行卷积时,由于默认填充设置为“有效”,因此输入空间中的两个值不会映射到我们的最终结果,这就是我们得到 8 的原因。
  • 我不明白为什么该层输出 32 作为最终索引。 Conv1D 层中的 filters 参数的实际作用是什么?对于我来说,该层如何操作最终输出(如下面的短语所述)并不是很直观。

根据文档,这应该是输出形状

Output shape: 3+D tensor with shape: batch_shape + (new_steps, filters) steps value might have changed due to padding or strides.

input_shape = (4, 10, 128)
x = tf.random.normal(input_shape)
y = tf.keras.layers.Conv1D(
32, 3, input_shape=input_shape[1:])(x)
print(y.shape) # (4, 10, 32)

最佳答案

您的前两个陈述是正确的。过滤器可以看作是对序列执行卷积的次数。

如下picture ,您可以看到执行的操作。左边的对象代表你的输入,中间的对象代表你的内核(大小为 (3,1)),右边的对象代表你的输出。

enter image description here

  • 就您的情况而言,如果您的过滤器数量等于 1,您将生成大小为 3128 个内核,用于浏览您的系列。
  • 对于每个内核,它会处理卷积运算:将内核值与系列值相乘并对 3 个乘积求和。
  • 然后对 128 个结果进行总结。
  • 如果您将过滤器数量设置为 32,则会执行此整个操作 32 次
  • 因此,Conv1D 的参数数量(无偏差)为:kernel_size * input_depth * number_filters = 3 * 128 * 32 = 12,288。
  • 使用偏差时,您可以将过滤器的数量添加到之前的结果中 (12,288 + 32 = 12320)。

因此,过滤器的数量就是处理该操作的次数。然后将输出堆叠起来,并在下一个卷积层中重复该过程。

不幸的是,我没有找到任何可以很好地理解 conv1D 的表示方法。这个one ,对于 Conv2D,解释了与 Conv1D 相同的过程。 (inuth_深度 = 3 且 number_filters = 输出深度 = 2)

enter image description here

关于python - Keras 中 Conv1D 层的输出大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65006011/

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