digits 4.0 0.14.0-rc.3 /Ubuntu (aws)
训练5级GoogLenet模型,每个班级有大约800个训练样本。我试图使用bvlc_imagent作为预先训练的模型。这些是我采取的步骤:
从http://dl.caffe.berkeleyvision.org/bvlc_googlenet.caffemodel下载了imagenet并将其放在/ home / ubuntu / models
一个。粘贴" train_val.prototxt"从此处https://github.com/BVLC/caffe/blob/master/models/bvlc_reference_caffenet/train_val.prototxt进入自定义网络标签和
湾'#'评论了"来源"和"后端"线(因为它抱怨他们)
我收到此错误:
ERROR: Cannot copy param 0 weights from layer 'loss1/classifier'; shape mismatch. Source param shape is 1 1 1000 1024 (1024000); target param shape is 6 1024 (6144). To learn this layer's parameters from scratch rather than copying from a saved net, rename the layer.
我已经从github问题等粘贴了各种train_val.prototext,遗憾的是没有运气,
我不确定为什么这会变得如此复杂,在旧版本的数字中,我们可以只输入文件夹的路径,它非常适合转移学习。
有人可以帮忙吗?
答案 0 :(得分:3)
将图层从“loss1 / classifier”重命名为“loss1 / classifier_retrain”。
当微调模型时,这就是Caffe的作用:
# pseudo-code
for layer in new_model:
if layer.name in old_model:
new_model.layer.weights = old_model.layer.weights
您收到错误,因为“loss1 / classifier”的权重是针对1000级分类问题(1000x1024),并且您尝试将它们复制到一个6级分类问题的层中(6x1024) )。重命名图层时,Caffe不会尝试复制该图层的权重,而是随机初始化权重 - 这就是您想要的。
另外,我建议你使用这个网络描述,它已经被设置为GoogLeNet的一体化网络描述。它会为你省去一些麻烦。