我想修改ImageNet的caffe模型,如下所述:
由于时态网的输入信道数与空间网的输入信道数不同(20vs.3),我们将第一层的ImageNet模型滤波器平均在信道上,然后将平均结果复制20倍作为时态网的初始化。
我的问题是如何取得上述结果?我如何打开caffe模型才能对其进行这些更改?
我读了网络手术指南,但它没有涵盖所需的程序。
谢谢你的帮助!
AMayer
发布于 2016-12-08 18:12:22
净外科教程应该为您提供所需的基本知识,以解决这一问题。但让我更详细地解释一下您需要做的步骤:
.prototxt网络架构:您需要两个文件:现有的ImageNet .prototxt文件和新的时态网络架构。在两个网络中,除了第一个卷积层之外,您应该使所有层相同,包括层的名称。这样,您可以使用ImageNet .caffemodel文件自动初始化权重。
由于第一个conv层的大小不同,您必须在您的.prototxt文件中给它一个与在ImageNet文件中不同的名称。否则,Caffe也会尝试用现有的权重初始化这个层,这将失败,因为它们有不同的形状。(这就是在编辑你的问题时发生的情况。)只需命名它,例如conv1b,并相应地更改对该层的所有引用。.caffemodel文件一起加载,因为除第一层之外的所有层都直接使用来自ImageNet的权重:
new_net =caffe.Net(‘new_network.Protxt’,'imagenet.caffemodel',caffe.TEST).caffemodel文件中:
new_net.save('new_weights.caffemodel')https://stackoverflow.com/questions/41045335
复制相似问题