Я реализовал нейронную сеть в Python, используя Tensorflow. Нейронная сеть снабжается данными, поступающими из входного конвейера. Для этого данные предварительно сериализуются в строку и сохраняются в файл .tfrecords:
writer = tf.python_io.TFRecordWriter(path + subfolder + '.tfrecords')
...
message = tf.train.Example(features=tf.train.Features(feature={'pclRaw': _bytes_feature(clRaw),...})
writer.write(message.SerializeToString())
Во время обучения данные из файла .tfrecords считываются обратно в очередь поездов. как таковой:
train_queue = tf.train.string_input_producer([...], num_epochs=400)
Первая эпоха работает нормально, и у меня нет проблем. Однако во второй эпохе после того, как несколько партий были пропущены через net, я сталкиваюсь со следующей ошибкой:
2020-02-08 04:20:02.611557: W tensorflow/core/kernels/queue_base.cc:277] _0_trainPipe/input_producer: Skipping cancelled enqueue attempt with queue not closed
Traceback (most recent call last):
File "train.py", line 133, in <module>
label, learning_rate])
File "/Users/Matthias/Workspaces/PyCharm/000_Virtual Environments/venv-tensorflow-py2.7.10/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 950, in run
run_metadata_ptr)
File "/Users/Matthias/Workspaces/PyCharm/000_Virtual Environments/venv-tensorflow-py2.7.10/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 1173, in _run
feed_dict_tensor, options, run_metadata)
File "/Users/Matthias/Workspaces/PyCharm/000_Virtual Environments/venv-tensorflow-py2.7.10/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 1350, in _do_run
run_metadata)
File "/Users/Matthias/Workspaces/PyCharm/000_Virtual Environments/venv-tensorflow-py2.7.10/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 1370, in _do_call
raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.OutOfRangeError: FIFOQueue '_1_testPipe/input_producer' is closed and has insufficient elements (requested 1, current size 0)
[[node testPipe/ReaderReadV2 (defined at /Users/Matthias/Workspaces/PyCharm/GeneralizedConvolutionalNeuralNetsEdges/input_pipelines.py:36) ]]
Errors may have originated from an input operation.
Input Source operations connected to node testPipe/ReaderReadV2:
testPipe/TFRecordReaderV2 (defined at /Users/Matthias/Workspaces/PyCharm/GeneralizedConvolutionalNeuralNetsEdges/input_pipelines.py:34)
testPipe/input_producer (defined at train.py:22)
Original stack trace for u'testPipe/ReaderReadV2':
File "train.py", line 23, in <module>
test_stuff = input_pipelines.tf_input(test_queue, POINT_CLOUD_DIMENSIONS, NUM_NEIGHBORS) #returns cloud, candidates, queries, labels, neighbors, distances, file_name
File "/Users/Matthias/Workspaces/PyCharm/GeneralizedConvolutionalNeuralNetsEdges/input_pipelines.py", line 36, in tf_input
_, serialized_example = reader.read(filename_queue)
File "/Users/Matthias/Workspaces/PyCharm/000_Virtual Environments/venv-tensorflow-py2.7.10/lib/python2.7/site-packages/tensorflow/python/ops/io_ops.py", line 166, in read
return gen_io_ops.reader_read_v2(self._reader_ref, queue_ref, name=name)
File "/Users/Matthias/Workspaces/PyCharm/000_Virtual Environments/venv-tensorflow-py2.7.10/lib/python2.7/site-packages/tensorflow/python/ops/gen_io_ops.py", line 1105, in reader_read_v2
queue_handle=queue_handle, name=name)
File "/Users/Matthias/Workspaces/PyCharm/000_Virtual Environments/venv-tensorflow-py2.7.10/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py", line 788, in _apply_op_helper
op_def=op_def)
File "/Users/Matthias/Workspaces/PyCharm/000_Virtual Environments/venv-tensorflow-py2.7.10/lib/python2.7/site-packages/tensorflow/python/util/deprecation.py", line 507, in new_func
return func(*args, **kwargs)
File "/Users/Matthias/Workspaces/PyCharm/000_Virtual Environments/venv-tensorflow-py2.7.10/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 3616, in create_op
op_def=op_def)
File "/Users/Matthias/Workspaces/PyCharm/000_Virtual Environments/venv-tensorflow-py2.7.10/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 2005, in __init__
self._traceback = tf_stack.extract_stack()
Я в недоумении, почему это происходит только во второй эпохе ... что изменилось ? Входные данные должны быть в основном одинаковыми ...? Это действительно связано с операцией ввода, или виновником может быть что-то совершенно другое? Кто-нибудь понял, что может быть причиной? Рад предоставить больше информации, если это необходимо. Пытался сварить его до минимума. Большое спасибо заранее!