繁体   English   中英

Keras 中 Conv1D 层的 output 的大小

[英]Size of output of a Conv1D layer in Keras

我试图了解一维卷积层的 output 应用于多个批次(在本例中为 3 个)二维输入形状(6x6)。

下面代码的 output 是(4, 10, 32) 对于前 2 个指数,这个答案非常简单。

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

根据文档,这应该是 output 形状

Output 形状:3+D 张量,形状:batch_shape + (new_steps, filters) 由于填充或步幅,步骤值可能已更改。

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)

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

在下中,您可以看到执行的操作。 左边的 object 代表您的输入,中间的 kernel(大小为 (3,1)),右边的 output。

在此处输入图像描述

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

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

不幸的是,我没有找到任何可以很好地理解 conv1D 的表示。 这个,对于 Conv2D,解释了与 Conv1D 相同的过程。 (inuth_depth = 3 和 number_filters = output_depth = 2)

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM