1

我想使用 MNIST 数据集而不是 ImageNet 数据集来训练 SqueezeNet 1.1 模型。
我可以拥有与 torchvision.models.squeezenet 相同的模型吗?
谢谢!

4

2 回答 2

2

TorchVision 仅为 SqueezeNet 架构提供 ImageNet 数据预训练模型。但是,您可以使用 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 数据上训练模型,这不会花费太长时间。


要记住的一项修改是更新 MNIST 的类数为 10。具体来说,应该将 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

于 2018-12-03T12:09:45.400 回答
0

预训练权重的初始化是可能的,但由于 MNIST 图像是 28X28 像素,因此您会遇到步幅和内核大小的问题。最有可能的是,在网络处于其推理层之前,减少将导致 (batch_sizex1x1xchannel) 特征映射,这将导致错误。

于 2018-12-04T10:27:33.590 回答