Поезд SqueezeNet модель с использованием набора данных MNIST Pytorch - PullRequest
0 голосов
/ 03 декабря 2018

Я хочу обучить модель SqueezeNet 1.1, используя набор данных MNIST вместо набора данных ImageNet.Могу ли я иметь ту же модель, что и torchvision.models.squeezenet?Спасибо!

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Инициализация предварительно обученных весов возможна, но у вас возникнут проблемы с шагами и размерами ядра, поскольку изображения MNIST имеют размер 28X28 пикселей.Скорее всего, сокращение приведет к (batch_sizex1x1xchannel) функциональным картам до того, как сеть окажется на своем уровне вывода, что приведет к ошибке.

0 голосов
/ 03 декабря 2018

TorchVision предоставляет только модель предварительной подготовки данных ImageNet для архитектуры SqueezeNet.Однако вы можете обучить свою собственную модель с использованием набора данных MNIST, взяв только модель (но не предварительно обученную) из torchvision.models.

In [10]: import torchvision as tv

# get the model architecture only; ignore `pretrained` flag
In [11]: squeezenet11 = tv.models.squeezenet1_1()

In [12]: squeezenet11.training   
Out[12]: True

Теперь вы можете использовать эту архитектуру для обучения моделидля данных MNIST, что не должно занимать слишком много времени.


Одна из модификаций, о которой следует помнить, - это обновить количество классов, равное 10 для MNIST.В частности, 1000 следует изменить на 10, а ядро ​​и шагать соответственно.

  (classifier): Sequential(
    (0): Dropout(p=0.5)
    (1): Conv2d(512, 1000, kernel_size=(1, 1), stride=(1, 1))
    (2): ReLU(inplace)
    (3): AvgPool2d(kernel_size=13, stride=1, padding=0)
  )

Вот соответствующее объяснение: finetuning_torchvision_models-squeezenet

...