基本的例子
更新: 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 中一樣,你可以選擇
SAME
和VALID
。SAME
將輸出相同的輸入長度,而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 卷積。