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

时间:2017-01-06 19:19:01

标签: machine-learning initialization neural-network deep-learning caffe

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

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

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

这样做有什么好方法/黑客吗?

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

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

1 个答案:

答案 0 :(得分:1)

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

  1. 为两个分支中的图层指定不同的名称并启用权重分享
  2. 初始化网络并训练1-2次迭代
  3. 然后训练原始网络(没有重量共享)用步骤2后得到的caffemodel初始化权重。
  4. 以上是一个很好的黑客,但网络手术是一种更好的方法。