我想使用 MNIST 数据集而不是 ImageNet 数据集来训练 SqueezeNet 1.1 模型。
我可以拥有与 torchvision.models.squeezenet 相同的模型吗?
谢谢!
问问题
1165 次
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)
)
于 2018-12-03T12:09:45.400 回答
0
预训练权重的初始化是可能的,但由于 MNIST 图像是 28X28 像素,因此您会遇到步幅和内核大小的问题。最有可能的是,在网络处于其推理层之前,减少将导致 (batch_sizex1x1xchannel) 特征映射,这将导致错误。
于 2018-12-04T10:27:33.590 回答