我使用MNIST的训练模型,采用了示例架构(但是在我自己的3个图像类别数据集上),并尝试将其集成到C++示例中。我修改了MNIST的架构文件,使其与C++示例的deploy.prototxt文件相似(用输入层替换了训练和测试层)。
遗憾的是,当我运行C++程序时,出现了以下错误:
F0827 14:57:28.427697 25511 insert_splits.cpp:35] Unknown bottom blob ‘label’ (layer ‘accuracy’, bottom index 1)
我尝试通过Google搜索解决这个问题,我认为MNIST和C++示例文件中的层之间存在一些差异,但我无法确定如何修改才能使其正常工作。
回答:
正如AbdulRahman AlHamali的评论所指出的那样,似乎你在deploy.prototxt
文件中保留了需要输入(”bottom”s)"label"
的损失和准确性层。
从deploy.prototxt
文件中删除这些损失层应该可以解决问题。
请注意,如果你使用了"SoftmaxWithLoss"
层作为损失层,你需要将其替换为"Softmax"
层,以获得网络输出的类别概率。"Softmax"
层只需要一个"bottom"
,不需要bottom: "label"
。