Изменение размера входных изображений для модели 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 изображения).
Пожалуйста, обратитесь к официальному документу для получения подробной информации о соотношении ввода-вывода.