我正在使用caffe,但输入仍有问题。在
这是我的解算器.prototxt公司名称:
train_net: "auto_train.prototxt" test_net: "auto_test.prototxt" test_iter: 800 test_interval: 20 base_lr: 0.01 momentum: 0.9 weight_decay: 0.0005 lr_policy: "inv" gamma: 0.0001 power: 0.75 display: 100 max_iter: 10000 snapshot: 5000 snapshot_prefix: "sed" solver_mode: GPU
下面是正在运行的python脚本:
^{pr2}$数据是手动生成的,每个数据是一个1x256向量,所有相同的标度值是8*label value
。也就是说,带有标签3的基准面是[24,24,24,24….,24,24]。我有8个标签和8万个数据。在
我的问题是,如果我把数据放入leveldb,标签顺序是0,1,2,3,4,5,6,7,8,0,1,2,3,4,5...
,caffe可以很好地训练网络。但是如果我按0,0,...,0,0,1,1,1,...,1,1,2,2,...
排序,caffe就不能学习了。如果我减少解算器.prototxt对于100,caffe总是说output label是0。在
似乎caffe并没有阅读所有的训练数据,只是阅读了前面的一些东西。但我找不到任何描述它的东西,除了训练批。在
事实上,如果我把培训批量增加到80000,caffe的培训效果会再次提高。虽然它很慢,也不是所谓的批处理。在
有人能帮忙吗?谢谢您!在
以随机顺序输入数据总是一个很好的做法:如果数据是以“排序”的方式输入的,则梯度将以每批非常退化的方向进行,从而产生较差的训练结果。在
caffe在培训期间“看到”的培训示例的数量是
max_iter
*batch_size
,因此如果您将这两个参数设置为超过您拥有的培训示例的数量,那么您应该覆盖培训期间拥有的所有数据。在相关问题 更多 >
编程相关推荐