Keras Conv2D декодер - PullRequest
       2

Keras Conv2D декодер

0 голосов
/ 05 января 2020

Я имею дело с изображениями разного размера (х, у). При использовании UpSampling2D после MaxPooling2D он плохо восстанавливает его, поскольку x-dim не равен y-dim. Это работает, когда x = y (например, 28x28), но в моем случае (388x45). Как я могу решить эту проблему.

input_img = Input(shape=(388, 45, 1))  

x = Conv2D(32, (3, 3), activation='relu', padding='same')(input_img)
x = MaxPooling2D((2, 2), padding='same')(x)

x = UpSampling2D((2, 2))(x)
x = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(x)

1 Ответ

1 голос
/ 05 января 2020

Решением этой проблемы является добавление ZeroPadding2D после слоя повышенной дискретизации для достижения желаемой формы.

Практически, если у вас есть форма вашего изображения ((19,30)), чтобы чтобы получить четное число, скажем, на первой позиции, вы должны добавить:

x = UpSampling2D((2, 2))(x) #say here the shape is (19,30) after upsampling but you need (20,30)
x = ZeroPadding2D(((1, 0), (0, 0)))(x) # change to ZeroPadding2D(((0, 0), (0, 1))) if you want second dimension to increase by 1

В этом ответе вы найдете идеальное использование ZeroPadding2D: se gnet в кератах: всего размер нового массива должен быть неизменным ошибка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...