tensorflow高效讀取資料之tfrecord

2022-05-12 04:30:49 字數 2286 閱讀 7606

tensorflow提供了一種統一的格式來儲存資料,這個格式就是tfrecord,接下來介紹如何使用tfrecord來統一輸入資料的格式。

tfrcord檔案中的資料都是通過tf.train.example protocol buffer的格式來儲存的,以下**給出了tf.train.example的定義。

message example

message feature

message feature

};

從以上**可以看出tf.train.example的資料結構是比較簡潔的。tf.train.example中包含了乙個從屬性名稱到取值的字典。其中屬性名稱是乙個字串,屬性數值可以為字串(byteslist),實數列表(floatlist)或者整數列表(int64list)。

#coding;utf-8

import tensorflow as tf

from tensorflow.examples.tutorials.mnist import input_data

import numpy as np

def _int64_feature(value):

return tf.train.feature(int64_list=tf.train.int64list(value=[value]))

def _bytes_feature(value):

return tf.train.feature(bytes_list=tf.train.byteslist(value=[value]))

mnist = input_data.read_data_sets('mnist/',dtype=tf.uint8,one_hot=true)

images = mnist.train.images

labels = mnist.train.labels

pixels = images.shape[1]

num_examples = mnist.train.num_examples

filename = 'output/train.tfrecords'

writer = tf.python_io.tfrecordwriter(filename)

for index in range(num_examples):

image_raw = images[index].tostring()

example = tf.train.example(features=tf.train.features(feature=))

writer.write(example.serializetostring())

writer.close()

以上程式可以將mnist資料集中所有的訓練資料儲存到乙個tfrcord檔案中,當資料量較大時,也可以將資料寫入多個tfrcord檔案。

#coding;utf-8

import tensorflow as tf

import matplotlib as plt

import cv2

reader = tf.tfrecordreader()

#建立乙個佇列來維護輸入的檔案列表

filename_queue = tf.train.string_input_producer(['output/train.tfrecords'])

_,serialized_example = reader.read(filename_queue)

features = tf.parse_single_example(serialized_example,

features=)

images = tf.decode_raw(features['image_raw'],tf.uint8)

labels = tf.cast(features['label'],tf.int32)

pixels = tf.cast(features['pixels'],tf.int32)

sess = tf.session()

coord = tf.train.coordinator()

threads = tf.train.start_queue_runners(sess=sess,coord=coord)

for i in range(10):

image,label,pixel = sess.run([images,labels,pixels])

cv2.imshow('image',image)

以上程式可以將之前生成的train.tfrecords檔案轉換為可讀。

TensorFlow高效讀取資料的方法

tfrecords其實是一種二進位制檔案,用來儲存 tf.train.example協議記憶體塊 protocol buffer 乙個example中包含features,features裡包含乙個名字為feature的字典,裡面是 key value 對,value是 乙個floatlis byt...

TensorFlow高效讀取資料的方法

tensorflow高效讀取資料的方法 關於tensorflow讀取資料,官網給出了三種方法 供給資料 feeding 在tensorflow程式執行的每一步,讓python 來供給資料。從檔案讀取資料 在tensorflow圖的起始,讓乙個輸入管線從檔案中讀取資料。預載入資料 在tensorflo...

Tensorflow高效讀取資料的方法

最新上傳的mcnn中有完整的資料讀寫示例,可以參考。關於tensorflow讀取資料,官網給出了三種方法 對於資料量較小而言,可能一般選擇直接將資料載入進記憶體,然後再分batch輸入網路進行訓練 tip 使用這種方法時,結合yield使用更為簡潔,大家自己嘗試一下吧,我就不贅述了 但是,如果資料量...