我试图实现“ Seeing the Forest from the Trees: A Holistic Approach to Near-infraredHeterogeneous Face Recognition, CVPRW 2016”中所述的暹罗网络。该方法涉及使用单个通道模型的相同预训练权重来初始化暹罗网络的两个通道。分担重量时,这在咖啡中是非常有效的。但我希望以一种不共享权重的方式来实现它(必须通过使用上述论文中提到的对比损失来在没有相同权重的情况下一起学习,但是两个通道的初始化必须相同)。我找不到在caffe中实现它的方法。你们中有人对使用caffe的巧妙方法或技巧有任何建议吗?
谢谢。

最佳答案

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

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


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

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


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

netDst.save('dstInitialized.caffemodel')

关于neural-network - Caffe:以相同的预训练权重初始化暹罗网络的两个 channel ,但在训练过程中不共享权重,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39226152/

10-10 10:28