男人扒开女人下添高潮日韩视频_亚洲国产成人无码专区_亚洲色爱av综合社区_成人无码区免费A片视频_午夜精品视频网站_久久久噜噜噜久久中文字幕色伊伊_亚洲精品久久久久国产_婷婷五月综合国产激情

rexian

咨詢電話:023-6276-4481

熱門文章

聯系方式

電 話:023-6276-4481

郵箱:

地址:重慶市南岸區亞太商谷6幢25-2

當前位置:網站首頁 > 技術文章 > Tensorflow 載入數據的三種方式

Tensorflow 載入數據的三種方式

編輯:pansiqin 發(fa)表時間:2018-05-09 09:00:12

Tensorflow 數據讀取有三種方(fang)式:

  • Preloaded data: 預加載數據

  • Feeding: Python產生(sheng)數據,再把數據喂給后(hou)端。

  • Reading from file: 從文件中直接(jie)讀取(qu)


這三種有讀取方式有什么區別呢? 我們首(shou)先要知道(dao)TensorFlow(TF)是(shi)怎么樣工作的。

TF的(de)(de)核心是(shi)用C++寫的(de)(de),這樣的(de)(de)好(hao)處是(shi)運行(xing)快,缺點是(shi)調用不靈(ling)活(huo)。而(er)Python恰好(hao)相反(fan),所以結合兩種語(yu)言的(de)(de)優勢。涉(she)及計(ji)算的(de)(de)核心算子(zi)和運行(xing)框架是(shi)用C++寫的(de)(de),并提供(gong)API給Python。Python調用這些API,設(she)計(ji)訓練模型(xing)(Graph),再將設(she)計(ji)好(hao)的(de)(de)Graph給后端去執行(xing)。簡而(er)言之,Python的(de)(de)角色是(shi)Design,C++是(shi)Run。

一、預加載數據:

import tensorflow as tf  

# 設計Graph  

x1 = tf.constant([2, 3, 4])  

x2 = ;tf.constant([4, 0, 1])  

y = tf.add(x1, x2)  

# 打開一個session --> 計算y  

with tf.Session() as sess:  

    print sess.run(y)  


二(er)、python產生數據,再(zai)將數據喂給后端


import tensorflow as tf  

# 設(she)計(ji)Graph  

x1 = tf.placeholder(tf.int16)  

x2 = tf.placeholder(tf.int16)  

y = tf.add(x1, x2)  

# 用Python產生(sheng)數據  

li1 = [2, 3, 4]  

li2 = [4, 0, 1]  

# 打開(kai)一個(ge)session --> 喂數(shu)據 --> 計算y  

with tf.Session() as sess:  

    print sess.run(y, feed_dict={x1: li1, x2: li2})  


說明:在這里x1, x2只是占位符,沒(mei)有(you)具體的(de)值,那么(me)運行的(de)時候去(qu)哪取(qu)值呢?這時候就要用到sess.run()中(zhong)的feed_dict參數,將Python產生的(de)數據喂給后端,并計算y。

這兩種方案的缺點:


1、預加載(zai):將數(shu)據直接內嵌到(dao)Graph中(zhong)(zhong),再把(ba)Graph傳(chuan)(chuan)入Session中(zhong)(zhong)運行。當數(shu)據量比較(jiao)大時,Graph的傳(chuan)(chuan)輸會遇到(dao)效率問題。

2、用占位符替代數(shu)據(ju),待運行的時候(hou)填充(chong)數(shu)據(ju)。

前兩種(zhong)方(fang)法很方(fang)便,但是(shi)遇到大(da)型(xing)數據的時候就會很吃力,即(ji)使是(shi)Feeding,中(zhong)間(jian)環節的增加也是(shi)不小的開銷,比如數據類(lei)型(xing)轉換等等。最優的方案就是在Graph定義好文件讀取的方法,讓TF自己去從文件中讀取數據,并解碼成可使用的樣本集。

三、從文件中讀(du)取(qu),簡單來說就是將數據讀(du)取(qu)模塊的圖搭好

640?wx_fmt=jpeg

1、準備數據,構造(zao)三個文件,A.csv,B.csv,C.csv

$ echo -e "Alpha1,A1\nAlpha2,A2\nAlpha3,A3" > A.csv  

$ echo -e "Bee1,B1\nBee2,B2\nBee3,B3" > B.csv  

$ echo -e "Sea1,C1\nSea2,C2\nSea3,C3" > C.csv  


2、單(dan)個Reader,單(dan)個樣本


#-*- coding:utf-8 -*-  

import tensorflow as tf  

# 生(sheng)成(cheng)一(yi)個(ge)先入先出(chu)隊列(lie)和一(yi)個(ge)QueueRunner,生(sheng)成(cheng)文(wen)件名隊列(lie)  

filenames = ['A.csv''B.csv''C.csv']  

filename_queue = tf.train.string_input_producer(filenames, shuffle=False)  

# 定(ding)義Reader  

reader = tf.TextLineReader()  

key, value = reader.read(filename_queue)  

# 定義Decoder  

example, label = tf.decode_csv(value, record_defaults=[['null'], ['null']])  

#example_batch, label_batch = tf.train.shuffle_batch([example,label], batch_size=1, capacity=200, min_after_dequeue=100, num_threads=2)  

# 運行Graph  

with tf.Session() as sess: ; 

    coord = tf.train.Coordinator()  #創建一個協調器(qi),管(guan)理(li)線(xian)程  

    threads = tf.train.start_queue_runners(coord=coord)  #啟動QueueRunner, 此時文(wen)件名隊列已(yi)經(jing)進(jin)隊。  

    for i in range(10):  

        print example.; background-color: inherit;">&am