Update: TensorFlow now supports 1D convolution since version r0.11, using
Consider a basic example with an input of length
10, and dimension
16. The batch size is
32. We therefore have a placeholder with input shape
[batch_size, 10, 16].
batch_size = 32 x = tf.placeholder(tf.float32, [batch_size, 10, 16])
We then create a filter with width 3, and we take
16 channels as input, and output also
filter = tf.zeros([3, 16, 16]) # these should be real values, not 0
Finally we apply
tf.nn.conv1d with a stride and a padding:
- stride: integer
- padding: this works like in 2D, you can choose between
SAMEwill output the same input length, while
VALIDwill not add zero padding.
For our example we take a stride of 2, and a valid padding.
output = tf.nn.conv1d(x, filter, stride=2, padding="VALID")
The output shape should be
[batch_size, 4, 16].
padding="SAME", we would have had an output shape of
[batch_size, 5, 16].
For previous versions of TensorFlow, you can just use 2D convolutions while setting the height of the inputs and the filters to