




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、tensorflow載入數據的三種方式Tensorflow數據讀取有三種方式:Preloaded data:預加載數據 Feeding: Python產生數據,再我們首先要知道把數據喂給后端。Reading from file:從文件中直接讀取這三種有讀取方式有什么區別呢?TensorFlow(TF)是怎么樣工作的。TF的核心是用C+寫的,這樣的好處是運行快,缺點是調 用不靈活。而Python恰好相反,所以結合兩種語言的優勢。涉及計算的核心算子和運行框架是用C+寫的,并提供API 給Python o Python調用這些API ,設計訓練模型(Graph), 再將設計好的Graph給后端去執行
2、。簡而言之,Python的 角色是 Design , C+ 是 Run。、預加載數據:python view plain copy import tensorflow as tf #y = tf. add(xl, x2)# 扌丁開個 session 一>計算 y withGraph xl = tf constant(2, 3, 4) x2 = tf constant (4, 0, 1)y = tf. add(xl, x2)# 打開個 session 一>計算 y withtf Session() as sess:print sessrim(y)二、python產生數據,再將數據喂給
3、后端python view plain copy import tensorflow as tf、it 設計 Graph xl =tf. placeholder (tfintl6) x2 = tfplaceholder (tfintl6)tf. add(xl, x2)# 用 Python 產生數據 lil = 2, 3, 4112 =4, 0, 1 # 打開一個 session >喂數據>計算 y with tf Session() as sess:print sessrtm(y,feed_dict=xl: lil, x2: li2) 說明在這里xl, x2只是占位符,沒有具體的值
4、,那么運行的時候去哪取值呢?這時候就要用到sess. run()中的feed_dict參數,將Python產生的數據喂給后端,并計算Vo這兩種方案的缺點:1、預加載:將數據直接內嵌到Graph中,再把Graph傳入Session中運行。當數據量比較大時,Graph的傳輸會遇到 效率問題。2、用占位符替代數據,待運行的時候填充數據。 前兩種方法很方便,但是遇到大型數據的時候就會很吃力, 即使是Feeding ,中間環節的增加也是不小的開銷,比如數 據類型轉換等等。最優的方案就是在Graph定義好文件讀取 的方法,讓TF自己去從文件中讀取數據,并解碼成可使用 的樣本集。三、從文件中讀取,簡單來說就
5、是將數據讀取模 塊的圖搭好1、準備數據,構造三個文件 ,A. csv, B csv, C csv python view plain copy $ echo -eAlphal, AlnAlpha2, A2nAlpha3, A3 > A. csv$ echo-e Beel, BlnBee2, B2nBee3, B3/z > B. csv$ echo -eSeal, ClnSea2, C2nSea3, C3 > C csv2、單個 Reader ,單個樣本python view plain copy #-*- coding:utf-8 -*- import tensorflow
6、as tf # 生成個先入 先出隊列和一個QueueRunner,生成文件名隊列 filenames = A csv, E csv, C csv f ilename_queue = tf. train. string_input_producer(filenames, shuffle=False) 定義 Reader reader = tf TextLineReader () key, value = reader read (f ilename_queue) # 定義 Decoder example, label = tf. decode_csv(value, record_defauIts
7、=nulT,/ null5) #example_batch, label_batch =tf train. shuffle_batch(example, label, batch_size=l, capacity=200, min_after_dequeue=100, num_threads=2)# 坯仃 Graph with tf Session () as sess:coord =tf. train. Coordinator () #創建一個協調器,管理線程threads = tftrain. start_queue_runners(coord=coord)動QueueRunner,此時文
8、件名隊列已經進隊。for i inrange(10):print example eval (), labe 1. eval ()coord request_stop()coord join(threads)說明:這里沒有使用tf. train, shuffle_batch ,會導致生成的樣本和 label之間對應不上,亂序了。生成結果如下:Alphal A2Alpha3 BlBee2 B3Seal C2Sea3 AlAlpha2 A3Beel B2Bee3 ClSea2 C3Alphal A2 解決方案: 用 tf. train, shuffle_batch,那么生成的 結果就能夠對應上。p
9、ython view plain copycoding:utf-8 -*-importtensorflow as tf #生成一個先入先出隊列和一個QueueRunner,生成文件名隊列filenames = A. csv,Bcsv, Ccsv filename_queue =tf. train. string_input_producer(filenames, shuffle=False)定義 Reader reader = tf TextLineReader () key, value = reader read(f 訂ename_queue) # 定義 Decoder example,
10、label = tf. decode_csv (value, record_defaults= nulT , nulT )example_batch, label_batch =tf train. shuffle_batch(example, label, batch_size=l,capacity=200, min_after_dequeue=100, num_threads=2)# JSiT Graph with tf Session() as sess:coord =tf. train. Coordinator () #創建一個協調器,管理線程threads = tf train. st
11、art_queue_runners (coord=coord)#啟動QueueRunner,此時文件名隊列已經進隊。for i inrange(10) :e_val, l_val =sess run(example_batch, label_batch)printe_val, l_valcoord request_stop()coord, join (threads) 3、單個Reader,多個樣本,主要也是通過 tf. train. shuffle_batch 來實現 python view plain copy #-*- coding:utf-8 -*- import tensorflow
12、 as tf filenames = Acsv, B csv, C csv, f ilename_queue =tf. train. string_input_producer(filenames, shuffle=False)reader = tf. TextLineReader ()key, value =reader read(f ilename_queue)example, label = tf. decode_csv(value, record_defaults= nulT , null5 )使用tf. train, batch()會多加了一個樣本隊列和一個QueueRunner o
13、#Decoder解后數據會進入這個隊列,再線程,相應增加線程數會提高讀取速度,但并不是線程越多 越好。 example_batch, label_batch =tftrainbatch( example, label, batch_size=5)with tfSession() as sess:coord =tftrainCoordinator()threads =tftrain. start_queue_runners(coord=coord)for i inrange(10):e_val, l_val =sess run(example_batch, label_batch)printe_
14、val, l_valcoord request_stop ()coord join(threads)個樣本,特征說明:下面這種寫法,提取出來的batch_size和label之間也是不同步的python view plain copy #一*- coding:utf-8 一*- import tensorflow as tf filenames = A csv, B csv, C csv filename_queue =tf train. string_input_producer(filenames, shuffle=False)reader = tfTextLineReader ()key
15、, value =reader read(filename_queue)example, label = tfdecode_csv(value, record_defauIts二nulT , nulT )使用tf. train, batch()會多加了一個樣本隊列和一 個QueueRunnerdecoder解后數據會進入這個隊列,再批量出隊。#雖然這里只有一個Reader ,但可以設置多線程,相應增加線程數會提高讀取速度,但并不是線程越好。example_batch, label_batch 二tftrain. batch(example, label, batch_size=5)with t
16、fSession() as sess:coord 二tftrainCoordinator ()threads =for i intf train. start_queue_runners(coord=coord)range (10): print example_batch. eval(),label_batch. eval( )coord request_stop()coord join(threads說明:輸出結果如下:可以看出廂label之間是不對應的代Alphdl Alpha2 Alpha3 Beel Bee2 B3 C1 C2 C3 AlAlphf Alpha3 Beel Bee2
17、Eee3 C1 C2 C3 Al A2Alpha3 Beel Eee2 Bee3 Seal C2 C3 A1 A2 A3,4、多個reader ,多個樣本python view plain copy #一*一 coding:utf-8 -*一importtensorflow as tf filenames = A csv, E csv, C csv_ filename_queue = tftrain. string_input_producer(filenames, shuffle=False) reader = tfTextLineReader()key, value= reader rea
18、d(f ilename_queue)record_defaults = nun,? nuir #定義了多種解碼器,每個解碼器跟一個reader相 example_list = tfdecode_csv(value, record_defauIts=record_defaults)for_ in range (2) # Reader 設置為 2 # 使用tf. train. batch_join(),可以使用多個reader ,并彳丁讀取數 每個 Reader 使用個線程。 example_batch, label_batch = tftrain. batch_join(example_list
19、, batch_size=5)with tf. Session() as sess:coord =tf.trainCoordinator()threads =tf. train .start_queue_runners(coord=coord)for i inrange (10):e_val, l_val =sess run(example_batch, label_batch)printe_val, l_valcoord request_stop ()coord join (threads)tf. train, batch 與 tf. train, shuffle_batch 函數是單 Re
20、ader 讀 個 取,但是可以多線程。tf. train. batch_join與tf. train, shuffle_batch_join 可設置多 Reader 讀取,每個Reader使用一個線程。至于兩種方法的效率,ReaderMWforReader使用一個線程。example_batch, label_batch2個線程就達到了速度的極限。多Reader時,2個ReaderO所以并不是線程越多越快,甚至更多的會使效率下降。5、迭代控制,設置epoch參數,指臺匕python view plain copy #- coding:utf-8importtensorflow as tf fi
21、lenames = A csv, B csv,C csv,#num_epoch: 設置迭代數 filename_queue =tf. train. string_input_producer(filenames,shuffle=False, num_epochs=3) reader =tf.TextLineReader() key, value =reader read (f ilenanie_queue) record_defau Its = null,V nuir #定義了多種解碼器,每個解碼器跟一個reader相 連example_list = tfdecode_csv(value, r
22、ecord_defaults=record_defaults)in range (2) # Reader 設置為 2 # 使用tf. train. batch_join(),可以使用多個reader ,并行讀取數example_list, batch_size=l)tf. train- batch join#初始化本地變量init_local_op =tf initialize_local_variables() with tfSession() assess:sessrun (init_local_opcoord =)tf train. Coordinator ()threads = tft
23、rain. start_queue_runners(coord=coord)trywhile not:coord should_stop():e_val, l_val = sessrun(example_batch, label_batch)printexcept tferrors0utOfRangeError:e_val, l_valprint C Epochs Complete!)finallcoord request_stop ()._y coord join (threads)coord request_stop()coord join (threads)在迭代控制中,記得添加tf.
24、initialize_local_variables (),官網教程沒有說明,但是如果不初始化,運行就會報錯。二對于傳統的機器學習而言,比方說分類問題,X1x2 x3是feature。對于二分類問題,label經過one-hot編碼之后就會是0,1或者1,0。一般情況下,我們會考慮將數 據方式去讀取數據說明:對于該數據,前三列代表的是 feature ,因為是分類問題,后兩列就是經過one-hot編碼之 后得到的組織在csv文件中,一行代表一個sample。然后使用隊列的 label#初始化本地變量init_local_op =使用隊列讀取該CSV文件的代碼如 下:python view plain copy #- coding:utf-8importtensorflow as tf #生成一個先入先出隊列和一個 QueueRunner,生成文件名隊列 f ilenames = A csv filename_queue =tf. train. string_input_producer(filenames, shuffle=Fal
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 有機肥料在提升土壤微生物對作物生長調節物質產生中的作用考核試卷
- 簡易呼吸器的使用 2
- 靜脈血液標本采集指南
- 遼寧輕工職業學院《大學生創新創業與就業指導》2023-2024學年第一學期期末試卷
- 洛陽職業技術學院《計算機網絡管理與安全》2023-2024學年第二學期期末試卷
- 江蘇省啟東市2024-2025學年高三下學期第二次模擬考試(期中)數學試題含解析
- 江蘇電子信息職業學院《大學生職業生涯規劃與就業指導(二)》2023-2024學年第二學期期末試卷
- 期貴州省畢節市重點中學2025屆初三第一次質量檢測試題物理試題含解析
- 遼寧省丹東33中學2024-2025學年初三下學期模擬(二)測試英語試題含答案
- XX學校課程改革與校本課程開發實施匯報范文
- 浙江2025年03月溫州市龍灣區事業單位公開招考(選調)31名工作人員筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 中國海洋石油集團有限公司招聘筆試真題2024
- 2025-2030冷軋行業市場發展分析及投資前景研究報告
- 新疆維吾爾自治區2024年中考數學試卷含真題解析
- 攪拌站安裝施工方案
- 設備全生命周期管理辦法
- 現場維保的安全措施、文明維保服務措施
- 初中地理教師培訓課件粵人版(2024)初中地理教材簡述
- 外研版(三起)(2024)三年級下冊英語Unit 1 單元測試卷(含答案)
- 弘揚五四精神主題班會課件
- 2024年第二次廣東省普通高中生物學業水平合格性考試含答案
評論
0/150
提交評論