Представьте себе, что есть авто-кодер, архитектура которого выглядит следующим образом:
сверточный слой без заполнения получает входное изображение интенсивности I размера WXH и генерирует 20 выходных сигналов (карт), используя 20 наборов весов / уклонов.Таким образом, каждый из этих 20 выходов будет иметь размер меньше WXH
(опционально), а пул-слой без заполнения генерирует 20 2D-массивов меньшего размера, которые затем векторизируются
полностью связанный слой генерирует другой вектор, который может иметь или не иметь тот же размер, что и вектор выше;
% # 1, # 2 и # 3 принадлежатк части энкодера
еще одно полностью подключенное зеркальное отображение слоев # 3, то есть размеры его входа и выхода соответствуют размерам вывода и ввода в # 3 соответственно.После этого соответствующие секции вывода будут объединены в 20 двумерных массивов
(опционально), отражающий слой # 2, отражающий аналогичным образом.Он снова выводит 20 двумерных массивов;
транспонированного слоя 2 сверточного сверточного слоя, применяя еще 20 наборов весов / смещений к 20 двумерным массивам (по одному для каждого).Наконец, он сгенерирует 20 выходных сигналов в формате WXH.
Поэтому мой вопрос заключается в том, как объединить эти 20 выходных сигналов в формате WXH для получения одного выходного сигнала в формате WXH в качестве интенсивностиизображение я?Или должен ли транспонированный слой свертки генерировать 20 выходов с меньшими размерами (более низкое разрешение)?
В Керасе я узнал, что существует слой tf.keras.layers.SeparableConv2D, который выполняет углубленную свертку, за которой следуетточечная свертка, которая может объединить выходы нескольких каналов вместе.Тем не менее, после выполнения tf.keras.layers.Conv2DTranspose в Keras нет единого слоя точечной свертки, поэтому я должен указать специальные параметры SeparableConv2D, чтобы сделать его фильтры пространственно 1X1, следовательно, создать де-факто точечную сверткуслой?
Спасибо большое!