Я согласен с Venkatesh, что 1D может иметь больше смысла для вашей реализации.Вместо слияния я обычно использую слои TimeDistributed , которые находятся в Keras.Это берет один слой и применяет это к временным измерениям.Преимущество состоит в том, что вы храните элементы из каждого измерения отдельно, пока не захотите объединить их.
Если вы используете заполнение (как вы упомянули), тогда имеет смысл применить один и тот же слой по всем временным измерениям, а не объединять слои и создавать неудобное пространство между промежуточными символами.Слои TimeDistributed решают эту проблему.
Я на мгновение гуглил и нашел человека, который пытался реализовать эту функцию в PyTorch, который, по крайней мере, может помочь вам начать работу.
PyTorch TimeDistributed
Чтобы немного расширить мое использование .. Моя последняя модель имеет периоды 5, 12 часов, каждый 12-часовой период имеет спорадическую активность, поэтому она дополняется до стандартной длины 30итоговая входная форма (?, 5, 30, embedding_size).Я генерирую объекты в течение одного периода с использованием TimeDistributed 1D CNN, затем я максимально объединяю эти объекты и объединяюсь, чтобы создать новую форму (?, 5, n_feats), где теперь есть 5 наборов карт объектов.Я снова проверяю эти данные с помощью другого 1D слоя CNN, который просматривает через периоды 5, 12 часов.Заполнение в каждом периоде не зависит друг от друга, поэтому я не могу просто использовать 2D CNN, поскольку элементы с одним и тем же индексом не будут представлять одно и то же время в разных периодах.
Редактировать:
Я думаю, что реализация Keras немного сложнее, но это должно быть близко.Их документация гласит: «Эта оболочка применяет слой к каждому временному фрагменту ввода».Если для того, чтобы добраться туда, требуется объединение, восстановите после этого, возможно, существуют некоторые соображения относительно карты объектов.Например, если размер фильтра равен 2, то последний элемент в первой карте объектов (после изменения формы) будет включать в себя последний объект и первый объект между двумя временными срезами.
Вот еще одна ссылка об обсуждении этой возможности в PyTorch, которая может оказаться полезной.