首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Caffe GoogleNet classification.cpp随机输出

Caffe GoogleNet classification.cpp随机输出
EN

Stack Overflow用户
提问于 2016-07-12 00:53:13
回答 2查看 576关注 0票数 0

我使用Caffe GoogleNet模型来训练我自己的数据(10k图像,2个类)。我在400000次迭代时停止了它,准确率约为80%。

如果我运行以下命令:

代码语言:javascript
复制
./build/examples/cpp_classification/classification.bin
  models/bvlc_googlenet/deploy.prototxt  
  models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel 
  data/ilsvrc12/imagenet_mean.binaryproto
  data/ilsvrc12/synset_words.txt
  1.png

它每次都会给我一个不同的--显然是随机的--结果(即,如果我运行n次,那么我会得到n个不同的结果)。为什么?我的训练失败了吗?它仍然使用参考模型中的旧数据吗?

EN

回答 2

Stack Overflow用户

发布于 2016-07-12 21:01:52

我不认为这是训练的问题。即使训练数据不是,它也应该每次都给出相同的(可能是错误的)输出。如果得到的结果是随机的,则表示权重未正确加载。

当您在.prototxt上加载.caffemodel时,caffe将加载prototxt中名称与caffemodel中的名称匹配的所有层的权重。对于其他层,它将执行随机初始化(根据prototxt中的规范,高斯xavier等)。

因此,您现在最好做的事情是检查模型是否使用您现在使用的相同的协议进行训练。

我看到您正在使用GoogleNet prototxt和reference_caffenet caffemodel。这是故意的吗?

票数 1
EN

Stack Overflow用户

发布于 2016-07-17 22:09:14

当您想要部署微调的模型时,您应该检查两个主要的东西:

  1. Inputs:
  • Input图像使用BGR通道而不是RGB (例如opencv)
  • 均值文件:与均值文件相同当BGR微调模型时,您会更改原始prototxt中某些图层的名称,并且您应该检查是否使用相同的图层名称?

还有一些Fine-tune tricksCS231n_transfer_learning,它们对微调非常有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38312250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档