【发布时间】:2019-05-04 17:22:39
【问题描述】:
我想使用 MNIST 数据集而不是 ImageNet 数据集来训练 SqueezeNet 1.1 模型。
我可以拥有与 torchvision.models.squeezenet 相同的模型吗?
谢谢!
【问题讨论】:
标签: python neural-network pytorch mnist torchvision
我想使用 MNIST 数据集而不是 ImageNet 数据集来训练 SqueezeNet 1.1 模型。
我可以拥有与 torchvision.models.squeezenet 相同的模型吗?
谢谢!
【问题讨论】:
标签: python neural-network pytorch mnist torchvision
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,内核和stride也相应地改。
(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)
)
【讨论】:
预训练权重的初始化是可能的,但由于 MNIST 图像是 28X28 像素,因此您会遇到步幅和内核大小的问题。很可能在网络处于其推理层之前,减少会导致 (batch_sizex1x1xchannel) 特征图,这将导致错误。
【讨论】: