解码tfrecords从队列中的不同文件中获取功能/标签

时间:2018-10-03 09:36:19

标签: tensorflow tensorflow-datasets tfrecord

我有n个tfrecord文件,每个文件都有一些功能和相应的标签。解码它们时,我从一个文件中获取功能,而从另一文件中获取标签(不确定)。但是,当我分别解码每个文件时,我得到了预期的结果,所以我认为我的tfrecord编码部分是正确的。但是我需要为我的应用程序使用队列。

with tf.Session() as sess:
feature = {'eeg1': tf.FixedLenFeature([], tf.string),
           'stages' : tf.FixedLenFeature([], tf.string)
           }    
filename_queue = tf.train.string_input_producer(filenames)
reader = tf.TFRecordReader()
_, serialized_example = reader.read(filename_queue)    
parsed_features = tf.parse_single_example(serialized=serialized_example, features=feature)   
eeg1 = tf.decode_raw(parsed_features['eeg1'], tf.int16)    
stages = tf.decode_raw(parsed_features['stages'], tf.int64)    
coord = tf.train.Coordinator()    
threads = tf.train.start_queue_runners(sess=sess, coord=coord)
print("_____________________")
print("Stages Shape",sess.run(tf.shape(stages)))
print("eeg1 Shape",sess.run(tf.shape(eeg1)))
coord.request_stop()
coord.join(threads)

输出:

_____________________
Stages Shape [1084]
eeg1 Shape [1079 3750]

我输入的形状是:

eeg1:  1053 3750
Stages: 1053
_____________________
eeg1:  1049 3750
Stages: 1049
_____________________
eeg1:  1079 3750
Stages: 1079
_____________________
eeg1:  1029 3750
Stages: 1029
_____________________
eeg1:  839 3750
Stages: 839
_____________________
eeg1:  1084 3750
Stages: 1084
_____________________

在示例输出中,从第三个文件(Dim0 = 1079)中读取特征(eeg1),但从最后一个文件(Dim0 = 1084)中读取标签(Stages)。 我期望的输出是:\

_____________________
Stages Shape [1079]
eeg1 Shape [1079 3750]

Or,
_____________________
Stages Shape [1084]
eeg1 Shape [1084 3750]

在不同的运行中有一些其他错误的输出:

_____________________
Stages Shape [839]
eeg1 Shape [1084 3750]
_____________________
Stages Shape [1084]
eeg1 Shape [1029 3750]
_____________________
Stages Shape [1053]
eeg1 Shape [1084 3750]
_____________________
Stages Shape [1084]
eeg1 Shape [1079 3750]

0 个答案:

没有答案