Пользовательский слой Keras, который выполняет свертки по строкам изображения

#python #tensorflow #keras

Вопрос:

Я хочу создать слой, который почти точно такой же, как слой Conv2D, но, по сути, имеет ядро для каждой строки изображения, так что каждая строка вывода генерируется путем взятия точечного произведения одной и той же строки матрицы весов с той же строкой входной матрицы, а затем шага на один столбец вправо. Другими словами, это похоже на Conv2D, но как только вы выполнили поэлементное умножение входных данных с помощью фильтра, вы суммируете только по строкам, а не по столбцу. Или, скажем, еще одним способом, например, Conv1D, но ядро движется по другой оси (вдоль длинного направления ядра).

Изображение показано здесь

Я попытался использовать tf.image.extract_patches для создания окон, а затем выполнить умножение по элементам с помощью матрицы сложенных весов, а затем суммировать ее. Это кажется прямым, но это захватило память

Я мог бы буквально сделать 1000 слоев обрезки и фильтры Conv2D, чтобы слои обрезки выбирали строку, а затем вдоль нее проходил слой Conv2D. Это тоже захватило память.

Любые идеи оценены по достоинству.