Conv2dTranspose указывает выходную форму - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь создать сеть, подобную автокодеру, но не знаю, как указать выходную форму сети. У меня есть вход размером mxn и парный ожидаемый вывод размером pxq. Я видел

Рассчитать размер вывода в слое свертки

Получение формы вывода слоя деконволюции с использованием tf.nn.conv2d_transpose в tenorflow

но есть ли способ форсировать выходную фигуру, не прибегая к куче математических вычислений для каждой входной фигуры?

1 Ответ

0 голосов
/ 14 апреля 2020

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

это в отличие от плотного (полностью подключенный слой), где вы можете получить любую фигуру, если хотите ее одно число (4, 60 или 5000 - но не (60,60)).

Одна маленькая хитрость, которая может помочь вам в подобных ситуациях, иногда состоит в том, чтобы получить форму предыдущего слоя, напечатать его, чтобы вы знали, какие параметры вам нужны для следующего слоя, и убедитесь, что ваши расчеты верны:

import keras.backend as K 
x = Conv2D()(x) # or any other layer
shape = K.int_shape(x)
print(shape)
x = Conv2D()(x) 
...