0

我正在学习使用深度学习框架Chainer,但在 ImageNet 上训练 GoogLeNet 时遇到了麻烦。

我使用给定的示例并使用以下方法调用它:

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 还不够吗(不是达到最先进的水平,而是真正学到一些东西)?

感谢您对可能出现问题的任何想法。

4

0 回答 0