如何读取TFFI记录

2024-05-15 18:41:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些代码可以这样写一个tfrecord文件

filename = "D:\\nvdata_.wav"
recname = 'list.tfrecord'
f_wav = wave.open(filename, 'rb')
num_frames = f_wav.getnframes()
print(num_frames)
data = np.fromstring(f_wav.readframes(num_frames), dtype=np.int16)
f_wav.close()
sub_data1 = data[10000:10200]
sub_data2 = data[20000:20200]

input_feature = [tf.train.Feature(int64_list=tf.train.Int64List(value=[input_])) for input_ in sub_data1]
label_feature = [tf.train.Feature(int64_list=tf.train.Int64List(value=[label_])) for label_ in sub_data2]

feature_list = {'input': tf.train.FeatureList(feature=input_feature),
                'label': tf.train.FeatureList(feature=label_feature)}

featurelists = tf.train.FeatureLists(feature_list=feature_list)
example = tf.train.SequenceExample(feature_lists=featurelists)
with tf.python_io.TFRecordWriter(recname) as writer:
    writer.write(example.SerializeToString())

现在我想解析文件中的数据。我怎么能这么做? 非常感谢你的帮助


Tags: 文件inputdataframestfnptfrecordtrain
1条回答
网友
1楼 · 发布于 2024-05-15 18:41:44

必须使用^{}读取tfrecord文件。通过tf.io.parse_single_example传递在tfrecord文件中创建的特性,如图所示。在tf.io.FixedLenFeature中,必须传递输入和标签的形状。我假设它们是0维的条目

下面是一个代码示例

def parse_function(record):
    features = {
        'input': tf.io.FixedLenFeature((), dtype=tf.int64),
        'label': tf.io.FixedLenFeature((), dtype=tf.int64)
    }
    example = tf.io.parse_single_example(record, features)
    return example['input'], example['label']

dataset = tf.data.TFRecordDataset('data.tfrecord')
dataset = dataset.map(parse_function)

for data in dataset.take(10):
    print(data)

相关问题 更多 >