Как обучить классификатор L2-SVM поверх сплющенного вектора представлений согласно статье DCGAN - PullRequest
0 голосов
/ 08 января 2019

В оригинальной бумаге 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 и т. д.). Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 09 января 2019

DCGAN даст вам 28672-мерный вектор для каждого изображения. Следовательно, форма вывода DCGAN будет (50000,28672) для полного CIFAR10 набора данных.

вы должны принять это как вход для вашего sklearn SVM x, который, как вы упомянули, принимает 2D-данные.

...