基本的例子
更新: 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 卷积。