【问题标题】:tensorflow using tf.train.string_input_producer使用 tf.train.string_input_producer 的张量流
【发布时间】:2017-06-07 23:01:45
【问题描述】:

我正在使用 tf.train.string_input_producer 从 tfRecord 文件中读取数据。我想它创建了一个队列和管道,数据将自动加载并输入我的模型。但是,它卡在了第一批,并显示了这个异常:

FailedPreconditionError(回溯见上文):尝试使用未初始化的值 input_producer/limit_epochs/epochs

我的 tfrecord 是由 tf.train.SequenceExample 制作的,而不是 tf.train.Example,官方指南中没有明确的文档。

这里是重现我的问题的代码快照。 (我相信我的问题来自队列初始化或某事。因为似乎整个管道都挂了)

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)

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    试试

    init2 = tf.local_variables_initializer()
    sess.run(init2)
    

    tf.train.string_input_producer() 中的变量(num_epochs 或容量)是局部变量。您必须使用局部变量初始化器来初始化它们,如上所示。

    如果这有帮助,请告诉我。

    【讨论】:

      猜你喜欢
      • 2017-12-01
      • 2017-11-05
      • 2018-06-09
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多