我有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]