我正在尝试使用tensorflow重新训练Inception v3模型以适应我自己的自定义分类。我已经下载了一些数据并将其格式化为目录。当我运行Python脚本时,它会为图片创建瓶颈,然后在第一次训练步骤(步骤0)运行时,出现了严重的错误,试图对0进行取模运算。这似乎是在计算mod_index的get_image_path函数中出现的,mod_index是index % len(category_list),所以category_list一定是0,对吗?
为什么会发生这种情况?我怎样才能防止它发生?
编辑:这是我在docker中看到的具体代码
2016-07-04 01:27:52.005912: Step 0: Train accuracy = 40.0%2016-07-04 01:27:52.006025: Step 0: Cross entropy = 1.109777CRITICAL:tensorflow:Category has no images - validation.Traceback (most recent call last): File "tensorflow/examples/image_retraining/retrain.py", line 824, in <module> tf.app.run() File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/platform/app.py", line 30, in run sys.exit(main(sys.argv)) File "tensorflow/examples/image_retraining/retrain.py", line 794, in main bottleneck_tensor)) File "tensorflow/examples/image_retraining/retrain.py", line 484, in get_random_cached_bottlenecks bottleneck_tensor) File "tensorflow/examples/image_retraining/retrain.py", line 392, in get_or_create_bottleneck bottleneck_dir, category) File "tensorflow/examples/image_retraining/retrain.py", line 281, in get_bottleneck_path category) + '.txt' File "tensorflow/examples/image_retraining/retrain.py", line 257, in get_image_path mod_index = index % len(category_list)ZeroDivisionError: integer division or modulo by zero
回答:
我已经修改了retrain.py,以确保验证中至少有一张图片(201行*)
if len(validation_images) == 0: validation_images.append(base_name)elif percentage_hash < validation_percentage:
(*) 行号在未来的版本中可能会改变。请查看注释。