Tensorflow 1.3版本更新概覽

責(zé)任編輯:editor004

作者:Roland Meertens

2017-08-03 11:31:32

摘自:INFOQ

距離Tensorflow的1 2 1版本發(fā)布才過(guò)去一個(gè)月,但新發(fā)布的1 3版本已經(jīng)包含了諸多更新。Dataset類(lèi)中還提供了幾個(gè)新函數(shù):Dataset list_files(file_pattern):返回一個(gè)Dataset,包含了與file_pattern模式相匹配的文件名字符串。

距離Tensorflow的1.2.1版本發(fā)布才過(guò)去一個(gè)月,但新發(fā)布的1.3版本已經(jīng)包含了諸多更新。開(kāi)發(fā)者可以在Tensorflow Github頁(yè)找到完整的發(fā)布報(bào)告。本文則會(huì)概述開(kāi)發(fā)者在升級(jí)到1.3版本之前和之后應(yīng)知曉的最重要變化。

從cuDNN 5.1到cuDNN 6

開(kāi)發(fā)者要從1.2.1升級(jí)到1.3,還需要升級(jí)系統(tǒng)中的cuDNN版本。1.3的編譯版本是用NVIDIA的cuDNN 6編譯的,而1.2.1用的是cuDNN 5.1。不想升級(jí)的開(kāi)發(fā)者還是可以從源代碼創(chuàng)建自己的編譯版本。cuDNN新版顯著提升了softmax層的性能。cuDNN 6新增的一個(gè)有趣的功能是膨脹卷積(dilated convolution),Tensorflow已經(jīng)支持此特性。需要注意的是,從1.1.0版本開(kāi)始,Tensorflow不再支持Mac上的GPU。雖然開(kāi)發(fā)者還是能得到補(bǔ)丁,但不能保證它能正常運(yùn)行。

  tf.contrib.data.Dataset類(lèi)

tf.contrib.data.Dataset類(lèi)獲得了一些重要更新。開(kāi)發(fā)者可以使用這個(gè)類(lèi)為自己在Tensors中的數(shù)據(jù)創(chuàng)建統(tǒng)一的輸入流水線,輸入來(lái)源可以是內(nèi)存、文件或磁盤(pán),支持多種數(shù)據(jù)格式。它還能用來(lái)對(duì)使用Dataset.map()的各個(gè)獨(dú)立元素應(yīng)用函數(shù),或者對(duì)所有使用Dataset.batch()的元素應(yīng)用函數(shù)。這個(gè)類(lèi)中缺少嵌套結(jié)構(gòu)的函數(shù)現(xiàn)在把列表隱式地轉(zhuǎn)換成tf.Tensor對(duì)象。不想用它的用戶可以使用元組來(lái)代替。Dataset類(lèi)中還提供了幾個(gè)新函數(shù):

Dataset.list_files(file_pattern):返回一個(gè)Dataset,包含了與file_pattern模式相匹配的文件名字符串。Dataset.interleave(map_func,cycle_length):賦予程序員更大的自由度來(lái)處理函數(shù)到元素的映射。它仍會(huì)對(duì)整個(gè)dataset應(yīng)用map_func,但會(huì)交叉結(jié)果,這樣有助于同時(shí)處理多個(gè)輸入文件。ConcatenateDataset:用于擴(kuò)展了Dataset類(lèi)的一個(gè)類(lèi)。它的init函數(shù)接受兩個(gè)Dataset作為參數(shù),通過(guò)已有的Dataset.concatenate()函數(shù)將它們連接起來(lái)。

要了解更多信息,開(kāi)發(fā)者應(yīng)該參閱Github上的開(kāi)發(fā)者指南中關(guān)于使用Dataset類(lèi)的說(shuō)明。

高級(jí)API函數(shù)和統(tǒng)計(jì)分布

雖然Keras和TFlearn用戶已有很多高級(jí)API函數(shù)可用,Tensorflow又在庫(kù)中增加了下列函數(shù):DNNClassifier、 DNNRegressor、LinearClassifer、LinearRegressor、DNNLinearCombinedClassifier、DNNLinearCombinedRegressor。這些estimator是tf.contrib.learn包的一部分,使用方法可參閱Tensorflow文檔。

新增的一項(xiàng)內(nèi)容是多重統(tǒng)計(jì)分布。使用一個(gè)類(lèi)表示一個(gè)統(tǒng)計(jì)分布,并用定義這個(gè)分布的參數(shù)進(jìn)行初始化?,F(xiàn)有很多單變量和多變量的分布。開(kāi)發(fā)者也能擴(kuò)展已有的類(lèi),但是必須繼續(xù)支持Distribution基類(lèi)中現(xiàn)有的函數(shù)。為避免無(wú)效的屬性,開(kāi)發(fā)者可以讓程序拋出一個(gè)異常,或者選擇用NaN值處理。下面的例子展示了開(kāi)發(fā)者如何從一個(gè)均勻分布中獲取一個(gè)帶有隨機(jī)變量的張量:

  已有函數(shù)的改動(dòng)

已有的函數(shù)也有一些改動(dòng)。tf.gather函數(shù)是用來(lái)在張量中選取變量的,現(xiàn)在加入了坐標(biāo)軸參數(shù),可以更靈活地收集數(shù)據(jù)。

tf.pad函數(shù)用來(lái)在已有張量周?chē)迦胫担F(xiàn)在可支持“CONSTANT”實(shí)參。使用這個(gè)實(shí)參時(shí),padding到已有張量時(shí)會(huì)使用0來(lái)填充已有張量。之前已有的模式是“REFLECT”和“SYMMETRIC”。

  留下你的反饋

雖然本文涵蓋了多數(shù)重要更新,但開(kāi)發(fā)者可能也想了解其他更新和功能。筆者請(qǐng)開(kāi)發(fā)者們就Tensorflow 1.3版本補(bǔ)充更多內(nèi)容,包括我忘記寫(xiě)上的內(nèi)容、現(xiàn)有代碼中發(fā)現(xiàn)的問(wèn)題,或者其它任何內(nèi)容,請(qǐng)?jiān)谖暮笤u(píng)論中留言。還沒(méi)注冊(cè)InfoQ的訪客可以注冊(cè)賬號(hào)寫(xiě)下評(píng)論,為眾多同行提供幫助。

查看英文原文:Overview of Changes in Tensorflow Version 1.3

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)