Ich benutze tf.train.string_input_producer, um Daten aus tfRecord-Datei zu lesen. Ich nehme an, es erstellt eine Warteschlange und eine Pipeline und die Daten werden automatisch geladen und in mein Modell eingezogen. Allerdings ist es bei der ersten Charge stecken, und zeigt diese Ausnahme:tensorflow mit tf.train.string_input_producer
FailedPreconditionError (siehe oben für Traceback): Der Versuch, nicht initialisierte Wert input_producer/limit_epochs/Epochen
meine tfrecord von tf gemacht zu verwenden .train.SequenceExample, anstelle von tf.train.Example, die keine eindeutige Dokumentation im offiziellen Handbuch haben.
Hier ist Code-Snapshot mein Problem zu reproduzieren. (Ich glaube, mein Problem aus der Warteschlange Ersteinstellung bzw. etw kommen., Weil es scheint, dass die gesamte Pipeline aufzuhängen ist)
from config.config import get_config
init = tf.global_variables_initializer()
config = get_config()
filename_queue = tf.train.string_input_producer(['data0.tfrecord,data1.tfrecord'], 5, capacity=16384)
reader = tf.TFRecordReader()
(keys, values) = reader.read_up_to(filename_queue, config.batch_size)
context_features = {
"seq_len": tf.FixedLenFeature([1], dtype=tf.int64),
}
audio_features = {
"audio": tf.FixedLenSequenceFeature([config.num_features], dtype=tf.float32),
"label": tf.FixedLenSequenceFeature([config.num_classes], dtype=tf.float32)
}
audio_list = []
label_list = []
len_list = []
for i in range(config.batch_size):
print(i)
context, sequence = tf.parse_single_sequence_example(
serialized=values[i],
context_features=context_features,
sequence_features=audio_features
)
audio = sequence['audio']
label = sequence['label']
# seq_len = context['seq_len'][0]
seq_len = tf.shape(audio)[0]
audio_list.append(audio)
label_list.append(label)
len_list.append(seq_len)
audio_tensor = tf.stack(audio_list)
label_tenor = tf.stack(label_list)
len_tensor = tf.stack(len_list)
with tf.Session() as sess:
sess.run(init)
threads = tf.train.start_queue_runners(sess=sess)
for i in range(3):
x, y, z = sess.run([audio_tensor, label_tenor, len_tensor])
print(z)
das funktioniert! vielen Dank! –