加日拉·買買提熱衣木
(喀什大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,喀什 844000)
Dataset也可以作為內(nèi)存數(shù)據(jù)庫(kù)應(yīng)用,但是和一般數(shù)據(jù)庫(kù)有著明顯的區(qū)別,實(shí)際上Dataset是一種不依賴數(shù)據(jù)庫(kù)的獨(dú)立數(shù)據(jù)集合,無(wú)論是斷開數(shù)據(jù)鏈路或者關(guān)閉數(shù)據(jù)庫(kù),Dataset都可以使用,此外Dataset也具有描述復(fù)雜關(guān)系數(shù)據(jù)的能力。我們將使用Dataset類和相應(yīng)的Iterator來表示數(shù)據(jù)的訓(xùn)練和評(píng)估,以及創(chuàng)建在訓(xùn)練過程中迭代數(shù)據(jù)的數(shù)據(jù)饋送器。在本示例中,我們將使用在TensorFlow中可用的MNIST數(shù)據(jù),并為其構(gòu)建一個(gè)Dataset包裝。
Dataset API是TensorFlow中的一個(gè)全新的模塊,主要服務(wù)于數(shù)據(jù)讀取。語(yǔ)法上簡(jiǎn)潔易懂,此外想要應(yīng)用TensorFlow的Eager模式就必須要使用Dataset API來完成讀取數(shù)據(jù)工作。Iterator也就是迭代器模式,具體指的是,在不暴露對(duì)象的內(nèi)部細(xì)節(jié)的情況下,提供一種訪問容器對(duì)象中各元素的方法。在全面了解Dataset API中的兩大基礎(chǔ)類之后,就可以開始創(chuàng)建Dataset工作,在創(chuàng)建復(fù)雜Dataset的時(shí)候,可以將Dataset看做是類型相同的“元素”有序列表,在實(shí)際應(yīng)用過程中,可以是向量、字符串、圖片等。
一個(gè)Dataset能夠通過Transformation變成一個(gè)新的Dataset,并且通過Transformation完成數(shù)據(jù)的變換、打亂工作,組成新的batch和epoch,繼而進(jìn)行一系列操作,Transformation中具體包括了map、batcshuffle、repeat等,這些元素變換方式各不相同。
TensorFlow全新的數(shù)據(jù)讀取方法有兩種模式,在非Eager模式下,創(chuàng)建Iterator的方法還有另外三種更為復(fù)雜的Iterator,三種方法的功能不同。
以數(shù)字為例,如果在Dataset中的每一個(gè)元素所對(duì)應(yīng)的數(shù)據(jù)都是一個(gè)數(shù)字的話,那么在完成相應(yīng)的編程語(yǔ)言后,就可以說創(chuàng)建了一個(gè)dataset,上述代碼中包含了5個(gè)元素,此時(shí)只是將數(shù)據(jù)引入,還需要完成元素的取出工作,也就是要從dataset中將Iterator示例化,然后將Iterator進(jìn)行迭代。此處,可以分為兩種不同的模式,分別為非Eager和Eager模式,兩種模式中讀取dataset中元素的方法不同,整體編程語(yǔ)言也各不相同。值得注意的是,在非Eager模式下,dataset中的元素讀取結(jié)束后,再次嘗試sess.run(one_element),就會(huì)引發(fā)異常,因此在實(shí)際的編程過程中,可以利用這個(gè)異常判斷數(shù)據(jù)是否讀取結(jié)束。除了上文中的方法外Dataset還有其他三種創(chuàng)建方法,三種創(chuàng)建方法各不相同,使用的方法上也有著明顯的差別。
綜上所述,Dataset API能夠同時(shí)兼容傳統(tǒng)TensorFlow中讀取數(shù)據(jù)的方式,并且隨著Dataset API的完善和發(fā)展,將會(huì)成為TensorFlow中的主流讀取數(shù)據(jù)模式,而且在非Eager模式下,Dataset中讀取出來的元素會(huì)對(duì)應(yīng)著batch中的Tensor,而在Eager模式下,Dataset建立Iterator的方式存在著明顯的區(qū)別,此時(shí)讀取出來的數(shù)據(jù)就是含有值的Tensor,更加便于程序人員調(diào)試。
[1] 張俊,李鑫.TensorFlow平臺(tái)下的手寫字符識(shí)別[J].電腦知識(shí)與技術(shù),2016,12(16):199-201.
[2] 曹大有,胥帥.基于TensorFlow預(yù)訓(xùn)練模型快速、精準(zhǔn)的圖像分類器[J].鄖陽(yáng)師范高等??茖W(xué)校學(xué)報(bào),2017,37(3).
[3] 劉帆,劉鵬遠(yuǎn),李兵,徐彬彬.TensorFlow平臺(tái)下的視頻目標(biāo)跟蹤深度學(xué)習(xí)模型設(shè)計(jì)[J].激光與光電子學(xué)進(jìn)展,2017,09:283-291.
[4] 章敏敏,徐和平,王曉潔,周夢(mèng)昀,洪淑月.谷歌TensorFlow機(jī)器學(xué)習(xí)框架及應(yīng)用[J].微型機(jī)與應(yīng)用,2017,10:58-60.
[5] 孫雅琳,文福安.TensorFlow在大學(xué)英語(yǔ)語(yǔ)言訓(xùn)練中的應(yīng)用[J].軟件,2017,08:142-144.