我有一个多任务网络,有两个相似的分支和一个只有一个分支的预训练网络(也是相同的) . 我想用我预训练网络中各层的权重来初始化两个分支(在我的多任务网络中)中的层的权重 .
现在,我可以使用与预训练网络中相同的名称来正确初始化其中一个分支 . 但是,我必须保持另一个分支中的图层名称不同,因此这些图层不会采用预先训练的权重 .
另外,我不想在两个分支中分享权重 . 因此,为两个分支中相应层中的权重赋予相同的名称将不起作用 .
有没有一个好方法/黑客这样做?
PS:我想避免网络手术,但任何评论,解释一个很好的方法,也欢迎 .
澄清:我只是想用相同的权重初始化两个分支 . 他们可以在训练阶段学习不同的重量,因为它们由不同的损失层控制 .
1 回答
Przemak D的answer是一个很好的黑客来做上述事情 .
为两个分支中的图层指定不同的名称并启用权重共享
初始化网络并训练1-2次迭代
然后训练原始网络(没有重量共享)用在步骤2之后得到的caffemodel初始化权重 .
以上是一个很好的黑客,但净手术是一个更好的方法来做到这一点 .