我有一个预先训练好的网络,我想用它来测试我的数据。我使用.prototxt定义了网络体系结构,我的数据层是一个自定义Python层,它接收带有我的数据路径和标签的.txt文件,对其进行预处理,然后提供给网络。
在网络的最后,我有一个自定义Python层,它可以获得网络和标签(来自第一层)的类预测,并打印,例如,所有批次的准确性。
我希望在所有示例都通过网络之前运行网络。
但是,在搜索测试网络的命令时,I've found:
caffe test -model architecture.prototxt -weights model.caffemodel -gpu 0 -iterations 100
如果我没有设置-iterations,它会使用默认值(50)。
你们有没有人知道如何在不设置迭代次数的情况下运行caffe测试?
非常感谢你的帮助!
答案 0 :(得分:1)
不,Caffe没有办法检测到它只运行了一个纪元(使用每个输入向量一次)。您可以编写验证输入例程来执行此操作,但Caffe希望您提供数量。这样,您可以为各种验证数据集生成易于比较的结果。但是,我同意这是一个方便的功能。
缺乏此功能可能与缺乏培训和插页测试有关。 在培训中,我们调整超参数以获得给定应用程序的最准确模型。事实证明,这更依赖于 TOTAL_NUM 而不是时代数量(给定足够大的训练集)。
使用固定的训练集,我们经常将图形精度(y轴)与时期(x轴)进行对比,因为在我们调整批量大小时,这会产生易处理的结果。但是,如果我们将训练集的大小减半,那么最具可比性的图表将在 TOTAL_NUM 而不是纪元数字上进行缩放。
此外,通过限制测试集的大小,我们可以避免在培训期间长时间等待反馈。例如,在针对ImageNet数据集(1.2M图像)的训练中,我通常测试大约1000个图像,通常每个时期不超过5次。