我正在学习使用深度学习框架Chainer,而且我在ImageNet上训练GoogLeNet时遇到了麻烦。
我使用给定的example并使用以下方法调用它:
python2 train_imagenet.py
--arch googlenet
--batchsize 64
--epoch 10
--gpu 0
--mean ~/data/imagenet/ILSVRC2012_devkit_t12/data/mean_RGB_256x256.npy
--out output/
--root ~/data/imagenet/dataset_sample_256x256/
--val_batchsize 8
~/data/imagenet/lists/train_files_sample.txt
~/data/imagenet/lists/val_files_sample.txt
我使用了包含5000张图像的ImageNet子集,每张图像都在256x256中调整大小,并在需要时转换为RGB。
我的损失甚至没有轻微变化,如下面的日志所示。当我记录预测的类时,它总是在几次迭代之后结束,预测始终是同一个类(但是当我再次运行它时,这个类会改变)。我仔细检查了我的数据集,一切似乎都很好,我使用ImageNet标签ID,我的txt文件包含路径和标签对,每行一个。
epoch iteration main/loss validation/main/loss main/accuracy validation/main/accuracy lr
1 100 11.0533 0.00015625 0.01
2 200 11.0533 0.00078125 0.01
3 300 11.0533 0.00046875 0.01
5 400 11.0533 0.0009375 0.01
6 500 11.0531 0.000625 0.01
7 600 11.0532 0.00078125 0.01
8 700 11.0533 0.0009375 0.01
由于这是来自官方回购的代码,我想我的子集出了点问题。我的预处理是对的吗? 5000还不够(不是达到最先进水平,而是要真正学到一些东西)?
感谢任何可能出错的想法。