Tensorflow中使用tfrecord方式讀取數據

使用Tensorflow訓練神經網絡時,咱們能夠用多種方式來讀取本身的數據。若是數據集比較小,並且內存足夠大,能夠選擇直接將全部數據讀進內存,而後每次取一個batch的數據出來。若是數據較多,能夠每次直接從硬盤中進行讀取,不過這種方式的讀取效率就比較低了。此篇博客就主要講一下Tensorflow官方推薦的一種較爲高效的數據讀取方式——tfrecord。html

從宏觀來說,tfrecord實際上是一種數據存儲形式。使用tfrecord時,其實是先讀取原生數據,而後轉換成tfrecord格式,再存儲在硬盤上。而使用時,再把數據從相應的tfrecord文件中解碼讀取出來。那麼使用tfrecord和直接從硬盤讀取原生數據相比到底有什麼優點呢?其實,Tensorflow有和tfrecord配套的一些函數,能夠加快數據的處理。實際讀取tfrecord數據時,先以相應的tfrecord文件爲參數,建立一個輸入隊列,這個隊列有必定的容量(視具體硬件限制,用戶能夠設置不一樣的值),在一部分數據出隊列時,tfrecord中的其餘數據就能夠經過預取進入隊列,而且這個過程和網絡的計算是獨立進行的。也就是說,網絡每個iteration的訓練沒必要等待數據隊列準備好再開始,隊列中的數據始終是充足的,而往隊列中填充數據時,也可使用多線程加速。網絡

tfrecord的存儲和讀取看一下連接:多線程

 http://blog.csdn.net/qq_16949707/article/details/53483493函數

http://www.360doc.com/content/17/0611/21/42392246_661965445.shtml.net

相關文章
相關標籤/搜索