Для этого требуется модуль пула, который принимает входные данные, а также несколько размеров ядра:
- выполняет усреднение на входе с каждым ядром AveragePooling2D
- выполняет свертку 1x1, после чего UpSampling2D< используется /code>
Код: Выделить всё
def pyramid_pooling_module(x, pool_sizes):
pool_outputs = []
for pool_size in pool_sizes:
pooled= layers.AveragePooling2D(pool_size)(x)
pooled= layers.Conv2D(512, (1,1), padding='same')(pooled)
pooled= layers.UpSampling2D(size=pool_size, interpolation='bilinear')(pooled)
print(pool_size)
pool_outputs.append(pooled)
return layers.Concatenate()(pool_outputs)
Из-за чего используемые ядра (1x1, 2x2, 3x3, 6x6) будут иметь ошибки округления от средних слоев пула для 3x3, 6x6
таким образом, что окончательные объединенные выходные данные для этих слоев будут (66, 120)
Я не знаю, как исправить это должно изменить размер моих входных данных до размера, который точно делится на 6x6? есть ли другой способ?
Подробнее здесь: https://stackoverflow.com/questions/790 ... image-size