解决方案:
1.检查文件路径是否有误:
比如我这里,我之前写错了,弄成了../data/test/
但是我的代码文件在其他的磁盘,不在数据盘,就造成了这个bug
2.检查一下你的batch_size是不是过大了,磁盘读取打满了但是还是没读取到你的数据目标值:
例如:
这里的batch_size
我在其他地方设置,设置得太大了,导致磁盘没读取到多线程程序就处理了。
就会爆出这个问题,你应该根据自己的电脑情况配置batch_size,
也别太小,因为batch_size大一点训练比较快。
其中shuffle_batch
的参数设置详细信息:
tensor_list: 入队的张量列表
batch_size: 单次批处理的样本数量
num_threads=1: 线程数量
min_after_dequeue: 单次提取batch_size个样本后,剩余队列进行下一次提取保证的至少剩余量,如果太大,则刚开始需要向capacity中补充很多数据
capacity: 整个队列的容量,从capacity中提取batch_size个样本
seed: 随机提取、补充随机种子数设置
enqueue_many: 进入队列数据是否允许重复,默认不允许重复
希望能对大家的理解有所帮助。
参考网址:
1.磁盘打满情况修改方案和问题详解
2.Tensorflow中tf.train.shuffle_batch的个人理解
3.TensorFlow中踩的坑 : RandomShuffleQueue ‘***’ is closed and has insufficient elements
问题定位
File "/home/admin/.local/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 929, in run
run_metadata_ptr)
File "/home/admin/.local/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1152, in _run
feed_dict_tensor, options, run_metadata)
File "/home/admin/.local/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1328, in _do_run
run_metadata)
File "/home/admin/.local/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1348, in _do_call
raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.OutOfRangeError: RandomShuffleQueue '_1_shuffle_batch/random_shuffle_queue' is closed and has insufficient elements (requested 64, current size 0)
[[node shuffle_batch (defined at cnn_words.py:96) ]]
Caused by op 'shuffle_batch', defined at:
File "cnn_words.py", line 348, in <module>
tf.app.run()
File "/home/admin/.local/lib/python3.6/site-packages/tensorflow/python/platform/app.py", line 125, in run
_sys.exit(main(argv))
File "cnn_words.py", line 334, in main
dct = validation()
File "cnn_words.py", line 255, in validation
test_images, test_labels = test_feeder.input_pipeline(batch_size=FLAGS.batch_size, num_epochs=1)
File "cnn_words.py", line 96, in input_pipeline
min_after_dequeue=100)
File "/home/admin/.local/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py", line 324, in new_func
return func(*args, **kwargs)
File "/home/admin/.local/lib/python3.6/site-packages/tensorflow/python/training/input.py", line 1346, in shuffle_batch
name=name)
File "/home/admin/.local/lib/python3.6/site-packages/tensorflow/python/training/input.py", line 873, in _shuffle_batch
dequeued = queue.dequeue_many(batch_size, name=name)
File "/home/admin/.local/lib/python3.6/site-packages/tensorflow/python/ops/data_flow_ops.py", line 488, in dequeue_many
self._queue_ref, n=n, component_types=self._dtypes, name=name)
File "/home/admin/.local/lib/python3.6/site-packages/tensorflow/python/ops/gen_data_flow_ops.py", line 3645, in queue_dequeue_many_v2
timeout_ms=timeout_ms, name=name)
File "/home/admin/.local/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py", line 788, in _apply_op_helper
op_def=op_def)
File "/home/admin/.local/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py", line 507, in new_func
return func(*args, **kwargs)
File "/home/admin/.local/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 3300, in create_op
op_def=op_def)
File "/home/admin/.local/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 1801, in __init__
self._traceback = tf_stack.extract_stack()
OutOfRangeError (see above for traceback): RandomShuffleQueue '_1_shuffle_batch/random_shuffle_queue' is closed and has insufficient elements (requested 64, current size 0)
[[node shuffle_batch (defined at cnn_words.py:96) ]]
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "cnn_words.py", line 348, in <module>
tf.app.run()
File "/home/admin/.local/lib/python3.6/site-packages/tensorflow/python/platform/app.py", line 125, in run
_sys.exit(main(argv))
File "cnn_words.py", line 334, in main
dct = validation()
File "cnn_words.py", line 297, in validation
acc_top_1 = acc_top_1 * FLAGS.batch_size / test_feeder.size
ZeroDivisionError: float division by zero
sh-4.2$ python cnn_words.py
valid
validation
定位问题截图:
忘了