39
правок
Изменения
→Архитектура
== Архитектура ==
В PixelRNN/PixelCNN используются много архитектурных трюков, позволяющих сделать вычисления быстрыми и надежными.
=== Маскированные сверточные слои (Mask) ===
В описаниях алгоритмов фигурируют два типа маскированных сверточных слоя - '''MaskA''', '''MaskB'''. Они необходимы для сокрытия от алгоритма лишней информации и учета контекста - чтобы не обрабатывать изображение после каждого подсчета, удаляя значения пикселей, можно применить маску к изображению, что является более быстрой операцией.
Для каждого пикселя в цветном изображении в порядке очереди существуют 3 контекста: красный канал, зеленый и синий. В данном алгоритме очередь важна, т.е. если сейчас обрабатывается красный канал, то контекст только от предыдущих значений красного канала, если зеленый - то от всех значений на красном канале и предыдущих значениях на зеленом и т.д.
'''MaskA''' используется для того, чтобы учитывать контекст предыдущих каналов, но при этом не учитывать контекст от предыдущих значений текущего канала и следующих каналов.
'''MaskB''' выполняет ту же функцию, что и '''MaskA''', но при этом учитывает контекст от предыдущих значений текущего канала.
=== Уменьшение размерности ===
На вход в любой их указанных выше алгоритмов (PixelCNN, Row LSTM, Diagonal BiLSTM) подается большое количество объектов. Поэтому внутри каждого из них сначала происходит уменьшение их количества в 2 раза, а затем обратное увеличение в 2 раза. Структура алгоритма с учетом уменьшения размерности показана на рисунке 4.
== Сравнение с GAN ==
== Примеры реализации ==