基本的例子

更新: TensorFlow 现在支持自版本 r0.11 以来的 1D 卷积,使用 tf.nn.conv1d

考虑一个输入长度为 10 和 dimension 16 的基本示例。批量大小是 32。因此,我们有一个输入形状为 [batch_size, 10, 16] 的占位符。

batch_size = 32
x = tf.placeholder(tf.float32, [batch_size, 10, 16])

然后我们创建一个宽度为 3 的过滤器,我们将 16 个通道作为输入,并输出 16 个通道。

filter = tf.zeros([3, 16, 16])  # these should be real values, not 0

最后,我们将 tf.nn.conv1d 应用于步幅和填充:

  • 步幅 :整数 s
  • padding :这就像在 2D 中一样,你可以选择 SAMEVALIDSAME 将输出相同的输入长度,而 VALID 将不会添加零填充。

对于我们的示例,我们采用 2 的步幅和有效的填充。

output = tf.nn.conv1d(x, filter, stride=2, padding="VALID")

输出形状应该是 [batch_size, 4, 16]
使用 padding="SAME",我们的输出形状为 [batch_size, 5, 16]

对于以前版本的 TensorFlow,你可以在将输入和滤波器的高度设置为 1 时使用 2D 卷积。