Update: TensorFlow now supports 1D convolution since version r0.11, using tf.nn.conv1d.
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 16 channels.
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:
sSAME and VALID. SAME will output the same input length, while VALID will 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].
With 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 1.