[原创] 用JAVA读取本地的TFRecord文件

TFRecord是一种用于TensorFlow的二进制数据格式,它可以更高效地存储和读取大规模数据集。TFRecord文件包含了一系列记录(record),每个记录可以是一个张量(tensor)或者一个序列(sequence)。
与文本文件不同,TFRecord文件被编码成二进制格式,这使得它们更易于在网络上传输和存储。同时,TFRecord也允许我们将大型数据集分割成多个部分,并且可以有效地并行读取和处理这些部分。
在TensorFlow中,我们通常使用TFRecord文件来存储和加载模型的训练数据、验证数据、测试数据等。创建TFRecord文件需要经过一定的序列化操作,但这些操作很容易实现,因为TensorFlow提供了相应的API支持。


在大数据处理流程中,TFRecord文件通常是由map-reduce job生成的,数据量通常很大。有时为了验证文件内容正确,我们需要取少量数据来检查,例如,我们可以拿map-reduce job生成的N个TFRecord文件中的一个,在本地解析出来,打印出其中的内容看是否正确。
下面就是一个用JAVA程序读取TFRecord文件并打印出其中一个Example的例子:

    String localTfRecordFile = "/path/to/your/tfrecord/file";
    InputStream inputStream = Files.newInputStream(Paths.get(localTfRecordFile));
    DataInput dataInput = new DataInputStream(inputStream);
    TFRecordReader reader = new TFRecordReader(dataInput, true);

    byte[] recordBytes = reader.read();
    while (recordBytes != null) {
      Example example = Example.parseFrom(recordBytes);
      System.out.println(example.toString());
      break;  // 只打印一个Example
    }
    inputStream.close();

唯一需要注意的就是一个引入:import java.nio.file.Paths;
文章来源:https://www.codelast.com/
再详细说明一下:

TFRecord文件和Example是TensorFlow中用于数据序列化和存储的两个概念,它们之间有着紧密的关系。
TFRecord是一种二进制格式的文件,在TensorFlow中被用来高效地存储大量的数据。它通常是由多个Example组成的序列化数据。而Example则是TensorFlow中序列化数据的标准格式,可以包含多个Features,每个Feature又包含一个Tensor(可以是张量、字符串等)。在将数据写入TFRecord文件时,需要将其封装为Example格式;在读取TFRecord文件时,也需要将其中的每个Example解析出来。
简而言之,TFRecord文件就像是一个容器,而Example则是这个容器里面每个元素的具体格式。在使用TFRecord时,我们通常会先定义好我们要存储哪些数据以及这些数据应该怎么被划分为不同的Features,并封装成一个或多个Example,在把这些Example写入到TFRecord文件中。

文章来源:https://www.codelast.com/
➤➤ 版权声明 ➤➤ 
转载需注明出处:codelast.com 
感谢关注我的微信公众号(微信扫一扫):
wechat qrcode of codelast
以及我的微信视频号:

发表评论