首页 文章

使用预先训练的网络(1个分支)来初始化网络中具有2个分支的层的权重

提问于
浏览
0

我有一个多任务网络,有两个相似的分支和一个只有一个分支的预训练网络(也是相同的) . 我想用我预训练网络中各层的权重来初始化两个分支(在我的多任务网络中)中的层的权重 .

现在,我可以使用与预训练网络中相同的名称来正确初始化其中一个分支 . 但是,我必须保持另一个分支中的图层名称不同,因此这些图层不会采用预先训练的权重 .

另外,我不想在两个分支中分享权重 . 因此,为两个分支中相应层中的权重赋予相同的名称将不起作用 .

有没有一个好方法/黑客这样做?

PS:我想避免网络手术,但任何评论,解释一个很好的方法,也欢迎 .

澄清:我只是想用相同的权重初始化两个分支 . 他们可以在训练阶段学习不同的重量,因为它们由不同的损失层控制 .

1 回答

  • 1

    Przemak D的answer是一个很好的黑客来做上述事情 .

    • 为两个分支中的图层指定不同的名称并启用权重共享

    • 初始化网络并训练1-2次迭代

    • 然后训练原始网络(没有重量共享)用在步骤2之后得到的caffemodel初始化权重 .

    以上是一个很好的黑客,但净手术是一个更好的方法来做到这一点 .

相关问题