私はtf.train.string_input_producerを使ってtfRecordファイルからデータを読み込みます。私はそれがキューとパイプラインを作成し、データが自動的に読み込まれ、私のモデルにフィードされると思います。しかし、それは最初のバッチで立ち往生し、この例外を示しています。tf.train.string_input_producerを使ったテンソルフロー
FailedPreconditionError(トレースバックについては上記参照):初期化されていない値を使用しようとinput_producer/limit_epochs /エポック
私tfrecordは、TFによって作られました公式ガイドに明確な文書がないtf.train.Exampleの代わりに.train.SequenceExampleを使用してください。
ここに私の問題を再現するためのコードスナップショットです。
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)
これは機能します!多くのありがとう! –