Как применить свертку к последним трем измерениям 5D-тензора, используя Conv2D в Keras? - PullRequest
0 голосов
/ 07 января 2019

Обычно входной тензор Conv2D в Керасе - это четырехмерный тензор с размерностью batch_size * n * n * channel_size. Теперь у меня есть 5D-тензор с размером batch_size * N * n * n * channel_size, и я хочу применить двухмерный сверточный слой для последних трех измерений для каждого i в N. Например, если размер ядра равен 1, то я ожидаю, что вывод будет иметь размерность batch_size * N * n * n * 1.

Кто-нибудь знает несколько простых способов реализовать это с помощью Keras?

Например, для полностью подключенного слоя Keras может сделать это автоматически. Если вход имеет форму batch_size * N * n, то плотный слой в Keras будет устанавливать слой FC для каждого i в N. Следовательно, мы получим вывод с batch_size * N * m, если мы установим Dense(m).

1 Ответ

0 голосов
/ 07 января 2019

Вы можете использовать оболочку слоя TimeDistributed, чтобы нанести один и тот же слой свертки на все изображения в тензоре 5D. Например:

model = Sequential()
model.add(TimeDistributed(Conv2D(5, (3,3), padding='same'), input_shape=(10, 100, 100, 3)))

model.summary()

Краткое описание модели:

Layer (type)                 Output Shape              Param #   
=================================================================
time_distributed_2 (TimeDist (None, 10, 100, 100, 5)   140       
=================================================================
Total params: 140
Trainable params: 140
Non-trainable params: 0
_________________________________________________________________
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...