Я пытаюсь кодировать автоэнкодер, который принимает тензор формы (Нет, 194, 434, 626, 3). Проблема в том, что после maxpool размеры становятся нечетными, и следующий maxpool округляет их. При декодировании с использованием upsample, я не могу получить выходное измерение таким же, как входное измерение. Я думал, что заполнение перед maxpooling может помочь, но tf.pad не влияет на тензоры.
x = Activation('relu')(x)
print(x.shape)
tf.pad(x, [[0,0],[0,1],[0,1],[0,1],[0,0]], "CONSTANT")
print(x.shape)
encoded = MaxPooling3D(pool_size=(2, 2, 2), padding='same')(x)
print(x.shape)
(?, 97, 217, 313, 8)
(?, 97, 217, 313, 8)
(?, 49, 109, 157, 8)
Что я делаю не так? Каковы лучшие методы повышения дискретизации при декодировании?