How to create a conv layer where the filter doesn't move across one dimension
Yes, you could do it that way.  Another is to use the stride parameter to specify the stride in each dimension.  You can set the other dimension's stride to 0.  stride=(1, 0) is the proper syntax, I think.
Put another way I want the filter to cover the image across one dimension and only move in the other direction.
If I have an input with shape (ignoring batch size and number of input channels) (h, w), I want to have a filter to have shape (x, w) where x<h. Would creating a filter with shape (x, w) and using padding of 'VALID' be the correct thing to do (the idea being VALID will force that the filter is only convolved across the image when the filter 'fits' across the image in the width dimension)?
Might there be another, better way to do this?