В оригинальной бумаге DCGAN ГАН частично оценивается путем использования в качестве экстрактора признаков для классификации CIFAR-10 после обучения на Imagenet.
Из бумаги:
Для оценки качества представлений, полученных DCGAN для контролируемых задач,
мы тренируемся на Imagenet-1k, а затем используем сверточные особенности дискриминатора из всех слоев,
максимальное объединение каждого слоя представления для создания пространственной сетки 4 × 4. Эти функции затем
сплющены и объединены, чтобы сформировать 28672-мерный вектор и регуляризованный линейный L2-SVM
над ними обучен классификатор.
Я пытался повторить это, используя PyTorch для обучения официального PyTorch DCGAN , а затем использую scikit-learn для классификации с использованием их linear SVC , но формулировка статьи сбивает с толку и я не уверен, куда идти отсюда. Я смог максимизировать каждый слой, а затем объединить их, но я озадачен тем, как приступить к классификации CIFAR-10.
Например, sklearn, вы используете model.fit(x,y)
для подгонки модели в соответствии с данными обучения, а затем model.predict([X])
для прогнозирования меток классов для выборок в X
. В model.fit(x,y)
, x
- это (2D) объекты (например, изображения), а y
- это метки. Но кажется, что в приведенной выше цитате говорится, что этот 28672
мерный вектор x
. Но это одномерный вектор, и они используют его для классификации CIFAR-10, у которого есть 50 тыс. Изображений и 50000> 28672. Я что-то упускаю из виду?
Я использую, например, model.fit
, где x
- изображения CIFAR-10 (например, torchvision.datasets.cifar10
) (хотя как сделать 50k Tensors
изображений RGB 2D-массивом - это другая история), а y
- их метки, а затем каким-то образом предсказать, используя 28672 мерный вектор?
Извинения, если это супер очевидно; к сожалению, это все, что они говорят об этом в газете, и никто, похоже, не воспроизвел это (по крайней мере, на GitHub и т. д.). Любая помощь будет принята с благодарностью!