Как выполнить Деконволюцию / ТрансКонволюцию в Керасе?
Моя модель структуры выглядит следующим образом:
Слой (тип) Выходная форма Параметр #
conv2d_31 (Conv2D) (None, 40, 40, 16) 160
_________________________________________________________________
max_pooling2d_4 (MaxPooling2 (None, 20, 20, 16) 0
_________________________________________________________________
conv2d_32 (Conv2D) (None, 20, 20, 32) 12832
_________________________________________________________________
max_pooling2d_5 (MaxPooling2 (None, 10, 10, 32) 0
_________________________________________________________________
conv2d_33 (Conv2D) (None, 10, 10, 64) 100416
_________________________________________________________________
max_pooling2d_6 (MaxPooling2 (None, 5, 5, 64) 0
_________________________________________________________________
flatten_2 (Flatten) (None, 1600) 0
_________________________________________________________________
dense_3 (Dense) (None, 1024) 1639424
_________________________________________________________________
dropout_2 (Dropout) (None, 1024) 0
_________________________________________________________________
dense_4 (Dense) (None, 1) 1025
_________________________________________________________________
activation_52 (Activation) (None, 1) 0
Я хочу применить деконволюцию к любому конкретному слою и отобразить результаты. Я подумал, что мне следует использовать слой Conv2DTranspose, но я не могу понять аргументы, связанные с ним. Пожалуйста помоги
1 ответ
Обратите внимание на номенклатуру.
Деконволюция не транспонированная свертка, хотя термины широко используются взаимозаменяемо. Правильный термин, который нужно использовать, это транспонированная свертка. Вот почему слой "деконволюции" даже не существует в Keras, в то время как Conv2DTransposed существует.
Вы можете попробовать построить модель глубокого обучения с помощью API модели вместо последовательного API.
Таким образом, вы можете добавить Conv2DTransposed к определенному слою и увидеть результат транспонированной свертки.
Вы можете просмотреть слой транспонированной свертки как слой с повышенной дискретизацией. Первый имеет обучаемые параметры, в то время как последний только удваивает / утраивает и т. Д. Размер изображения посредством интерполяции.
Ознакомьтесь с документацией Keras для функционального API (Model API): https://keras.io/models/model/
Посмотрите документацию Keras для транспонированной свертки: https://keras.io/layers/convolutional/
Проверьте эту учетную запись github, чтобы визуально понять транспонированную свертку: https://github.com/vdumoulin/conv_arithmetic