UpSampling2D в keras python выводит неправильное измерение - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь реализовать ResNet50 с версией сверток Octave вместо обычных сверток, что приводит к трем параллельным потокам, проходящим по сети, которые необходимо объединить в конце. Перед объединением двух из трех потоков необходимо выполнить повышающую дискретизацию, чтобы получить то же измерение, что и у третьего, но применение слоя UpSampling2D приводит к несогласованному поведению.

medium = UpSampling2D (size = (2,2), interpolation = 'ближайший') (средний)

низкий = UpSampling2D (размер = (4,4), интерполяция = 'ближайший') (низкий)

X = Объединить (ось = -1) ( [высокий, средний, низкий])

здесь начальные размеры: высокий: [?, 28,28,1536], средний: [?, 14,14,256], низкий: [?, 7,7,256 ]. Однако объединение не удается с ошибкой: размерность 1 в обеих формах должна быть равной, но это 28 и 224. Фигуры - [?, 28,28] и [?, 224,224]. для 'concatenate_1 / concat' (op: 'ConcatV2') с входными формами: [?, 28,28,1536], [?, 224,224,256], [?, 224,224,256], [] и с вычисленными входными тензорами: input [3 ] = <3>.

, поэтому повышающая дискретизация изменяет размерность на [?, 224,224,256] для низкого и среднего вместо [?, 28,28,256]. Я неправильно понял, как работает UpSampling2D? Я также пробовал использовать medium = keras.backend.repeat_elements (medium, rep = 2, axis = 1) low = keras.backend.repeat_elements (low, rep = 4, axis = 1) вместо UpSampling2D, но это приводит к еще более странным проблемам с большим потоком, изменяющим размерность на [?, 224,224,1536] в конкатенации, хотя все они отображались правильно, когда я печатал фигуры непосредственно перед конкатенацией.

Мой вопрос: есть ли что-то очевидное? я делаю здесь что-то не так, или что-то странное происходит где-то еще в моем коде, и что это может быть в таком случае. Спасибо

...