繁体   English   中英

Caffe:使用相同的预训练权重初始化两个频道的连体网络,但在训练期间没有共享权重

[英]Caffe: Initializing two channels of siamese networks with the same pretrained weights , but without sharing weights during training

我正在尝试实施“ 从树上看森林:近红外异构人脸识别的整体方法,CVPRW 2016 ”中描述的暹罗网络。 该方法涉及使用相同的单通道模型的预训练权重来初始化暹罗网络的两个通道。 当权重被分享时,这在caffe中是非常直接的。 但我希望以不分配权重的方式实现它(必须通过采用上述论文中提到的对比损失一起学习,但两个通道的初始化必须相同)。 我找不到在caffe中实现它的方法。 你们中的任何人都有任何关于整洁方法或黑客的建议吗? 谢谢。

您可以使用caffe在python中加载源和暹罗目标模型:

netSrc = caffe.Net('deploySrc.prototxt',
                'src.caffemodel',
                caffe.TEST)
netDst = caffe.Net('deployDst.prototxt',
                'dst.caffemodel',
                caffe.TEST)

然后,您可以从源到目标分配每层权重。 假设您要将图层转换从源复制到暹罗网络中的convA和convB副本:

netDst.params['convA'] = netSrc.params['conv']
netDst.params['convB'] = netSrc.params['conv']

然后将结果保存到新的caffemodel:

netDst.save('dstInitialized.caffemodel')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM