VGG微调期间的尺寸不匹配错误

时间:2018-02-15 03:22:28

标签: python deep-learning pytorch vision vgg-net

我一直关注官方PyTorch文档(http://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html)中的蚂蚁和蜜蜂转移学习教程。我试图通过改变最后一层来预测VGG19模型,以预测两个类中的一个。我可以使用以下代码修改最后一个fc层。

但是我在执行train_model函数时遇到错误。错误是“/opt/conda/conda-bld/pytorch_1513368888240/work/torch/lib/THC/generic/THCTensorMathBlas.cu:243”中的“大小不匹配”。知道问题是什么吗?

data.table

1 个答案:

答案 0 :(得分:0)

在定义模型时,您只考虑class BookSerializer < ActiveModel::Serializer attributes :id, :title, :description, :created_by, :created_at has_many :comments def comments object.comments.index_by(&:id) end end ,它仅包含网络的完全连接部分。然后,当将224 * 224 * 3图像馈送到模型时,它尝试“穿过”具有25K特征的线性层作为输入。要解决这个问题,你只需要先添加卷积部分,这样就可以重新定义模型:

classifier

现在你还要告诉要优化的参数,如果你只想训练最后一层(新添加的那个):

class newModel(nn.Module):
    def __init__(self, old_model):
        super(newModel, self).__init__()

        self.features = old_model.features
        self.classifier = nn.Sequential(*list(old_model.classifier.children())[:-1] +
                                         [nn.Linear(in_features=4096, out_features=2)])

    def forward(self, x):
        x = self.features(x)
        x = x.view(x.size(0), -1)
        x = self.classifier(x)
        return x

model_conv = newModel(model_conv)

其余代码保持不变。

希望它有所帮助!