【发布时间】:2016-09-24 09:30:49
【问题描述】:
我在 Torch 中加载了一个模型,我想对其进行微调。现在我想重新训练网络的最后两层(尽管将来我可能想添加层)。我怎样才能做到这一点?我一直在寻找教程,但我还没有找到我要找的东西。有什么建议吗?
【问题讨论】:
我在 Torch 中加载了一个模型,我想对其进行微调。现在我想重新训练网络的最后两层(尽管将来我可能想添加层)。我怎样才能做到这一点?我一直在寻找教程,但我还没有找到我要找的东西。有什么建议吗?
【问题讨论】:
我不知道我是否理解您的要求。如果你想让网络保持原样,除了你想要训练(或微调)的 2 层,你必须停止对你不想训练的层的反向传播,如下所示:
for i=1, x do
c = model:get(i)
c.updateGradInput = function(self, inp, out) end
c.accGradParameters = function(self,inp, out) end
end
现在只有这个循环之外的层会升级它们的参数。如果你想添加新层只需调用model:insert(module, position),你可以在这里查看Torch containers
如果这不是您想要的,请详细说明问题。
【讨论】: