Изменение размера входных изображений для модели Chainer DCGAN

Я использую файл примера Chainer DCGAN, который можно найти по адресу https://github.com/chainer/chainer/blob/master/examples/dcgan/train_dcgan.py. Он отлично работает для изображений 32x32, но для других разрешений README.md дает указание изменить сетевую архитектуру в net.py.

Как я понимаю из чтения документации, размер обучающих изображений отправляется в качестве параметра конструктору в класс Generator, как bottom_width и ch. Вот код для 32x32.

Генератор классов (chainer.Chain):

    def __init__(self, n_hidden, bottom_width=4, ch=512, wscale=0.02):

Я запутался в том, как это переводится в 32x32, и как изменить это в других разрешениях. Любая помощь будет принята с благодарностью.

1 ответ

Вы можете рассчитать это, понимая поведение Deconvolution2D, В net.py, 3 Deconvolution2D layer (self.dc1, self.dc2, self.dc3) определяется с stride=2 (4-й аргумент L.Deconvolution2D), что удваивает ввод высоту / ширину.

В результате выходной размер будет bottom_size * 2^3, что приводит к 32, когда bottom_size=4,

Так, например, если вы хотите получить 64x64 изображения, вы можете установить bottom_size=8 как для генератора, так и для дискриминатора (но вам нужны 64x64 изображения в качестве реальных данных, а не cifar-100, который составляет 32x32 изображения).

Пожалуйста, обратитесь к официальному документу для получения подробной информации о соотношении ввода-вывода.

Другие вопросы по тегам