1. 程式人生 > 程式設計 >關於tf.TFRecordReader()函式的用法解析

關於tf.TFRecordReader()函式的用法解析

讀取tfrecord資料

從TFRecords檔案中讀取資料, 首先需要用tf.train.string_input_producer生成一個解析佇列。之後呼叫tf.TFRecordReader的tf.parse_single_example解析器。

如下圖:

關於tf.TFRecordReader()函式的用法解析

解析器首先讀取解析佇列,返回serialized_example物件,之後呼叫tf.parse_single_example操作將Example協議緩衝區(protocol buffer)解析為張量。

簡單來說,一旦生成了TFRecords檔案,接下來就可以使用佇列(queue)讀取資料了。

def read_and_decode(filename):
  #根據檔名生成一個佇列
  filename_queue = tf.train.string_input_producer([filename])

  reader = tf.TFRecordReader()
  _,serialized_example = reader.read(filename_queue)  #返回檔名和檔案
  features = tf.parse_single_example(serialized_example,features={
                      'label': tf.FixedLenFeature([],tf.int64),'img_raw' : tf.FixedLenFeature([],tf.string),})

  img = tf.decode_raw(features['img_raw'],tf.uint8)
  img = tf.reshape(img,[224,224,3])
  img = tf.cast(img,tf.float32) * (1. / 255) - 0.5
  label = tf.cast(features['label'],tf.int32)

  return img,label

舉例:

下面程式碼是我的程式中利用TFRecord讀取格式時的程式碼:

關於tf.TFRecordReader()函式的用法解析

這部分只要使用對應的程式碼就可以,主要是知道咋回事。

以上這篇關於tf.TFRecordReader()函式的用法解析就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。