基本的例子

更新: 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 卷積。