TensorFlow數(shù)據(jù)讀取機制分析
大?。?/span>0.9 MB 人氣: 2017-09-28 需要積分:3
TensorFlow讀取機制圖解
首先需要思考的一個問題是,什么是數(shù)據(jù)讀取?以圖像數(shù)據(jù)為例,讀取數(shù)據(jù)的過程可以用下圖來表示:
假設(shè)我們的硬盤中有一個圖片數(shù)據(jù)集0001.jpg,0002.jpg,0003.jpg……我們只需要把它們讀取到內(nèi)存中,然后提供給GPU或是CPU進行計算就可以了。這聽起來很容易,但事實遠沒有那么簡單。事實上,我們必須要把數(shù)據(jù)先讀入后才能進行計算,假設(shè)讀入用時0.1s,計算用時0.9s,那么就意味著每過1s,GPU都會有0.1s無事可做,這就大大降低了運算的效率。
如何解決這個問題?方法就是將讀入數(shù)據(jù)和計算分別放在兩個線程中,將數(shù)據(jù)讀入內(nèi)存的一個隊列,如下圖所示:
讀取線程源源不斷地將文件系統(tǒng)中的圖片讀入到一個內(nèi)存的隊列中,而負責計算的是另一個線程,計算需要數(shù)據(jù)時,直接從內(nèi)存隊列中取就可以了。這樣就可以解決GPU因為IO而空閑的問題!
而在TensorFlow中,為了方便管理,在內(nèi)存隊列前又添加了一層所謂的“文件名隊列”。
為什么要添加這一層文件名隊列?我們首先得了解機器學習中的一個概念:epoch。對于一個數(shù)據(jù)集來講,運行一個epoch就是將這個數(shù)據(jù)集中的圖片全部計算一遍。如一個數(shù)據(jù)集中有三張圖片A.jpg、B.jpg、C.jpg,那么跑一個epoch就是指對A、B、C三張圖片都計算了一遍。兩個epoch就是指先對A、B、C各計算一遍,然后再全部計算一遍,也就是說每張圖片都計算了兩遍。
TensorFlow使用文件名隊列+內(nèi)存隊列雙隊列的形式讀入文件,可以很好地管理epoch。下面我們用圖片的形式來說明這個機制的運行方式。如下圖,還是以數(shù)據(jù)集A.jpg, B.jpg, C.jpg為例,假定我們要跑一個epoch,那么我們就在文件名隊列中把A、B、C各放入一次,并在之后標注隊列結(jié)束。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%
下載地址
TensorFlow數(shù)據(jù)讀取機制分析下載
相關(guān)電子資料下載
- 【風火輪YY3568開發(fā)板免費體驗】第六章:在Solus上運行自定義模型并遷移到Y(jié)Y3 411
- 深度學習框架tensorflow介紹 480
- 深度學習框架pytorch介紹 454
- 【米爾MYC-JX8MPQ評測】+ 運行 TensorFlow Lite(CPU和NPU對比) 524
- 手把手帶你玩轉(zhuǎn)—i.MX8MP開發(fā)板移植官方NPU TensorFlow例程 444
- 在樹莓派64位上安裝TensorFlow 505
- TensorFlow Lite for MCUs - 網(wǎng)絡(luò)邊緣的人工智能 339
- 2023年使用樹莓派和替代品進行深度學習 1506
- 用TensorFlow2.0框架實現(xiàn)BP網(wǎng)絡(luò) 1849
- 那些年在pytorch上踩過的坑 571