我一直关注官方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
答案 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)
其余代码保持不变。
希望它有所帮助!