Tensorflow的6大特征你都知道嗎?何為tensorflow張量
Tensorflow是最火的機器學(xué)習(xí)框架之一,利用tensorflow,大家可以輕松編寫諸多深度學(xué)習(xí)程序。為增進大家對tensorflow的認(rèn)識,本文將對tensorflow的張量類型和tensorflow的幾大特征予以介紹。如果你對本文內(nèi)容具有興趣,不妨繼續(xù)往下閱讀哦。
一、TensorFlow張量
張量:可理解為一個 n 維矩陣,所有類型的數(shù)據(jù),包括標(biāo)量、矢量和矩陣等都是特殊類型的張量。
TensorFlow 支持以下三種類型的張量:
1. 常量constant:常量是其值不能改變的張量。
2. 變量variable:當(dāng)一個量在會話中的值需要更新時,使用變量來表示。例如,在神經(jīng)網(wǎng)絡(luò)中,權(quán)重需要在訓(xùn)練期間更新,可以通過將權(quán)重聲明為變量來實現(xiàn)。變量在使用前需要被顯示初始化。另外需要注意的是,常量存儲在計算圖的定義中,每次加載圖時都會加載相關(guān)變量。換句話說,它們是占用內(nèi)存的。另一方面,變量又是分開存儲的。它們可以存儲在參數(shù)服務(wù)器上。
3. 占位符placeholder:用于將值輸入 TensorFlow 圖中。它們可以和 feed_dict 一起使用來輸入數(shù)據(jù)。在訓(xùn)練神經(jīng)網(wǎng)絡(luò)時,它們通常用于提供新的訓(xùn)練樣本。在會話中運行計算圖時,可以為占位符賦值。這樣在構(gòu)建一個計算圖時不需要真正地輸入數(shù)據(jù)。需要注意的是,占位符不包含任何數(shù)據(jù),因此不需要初始化它們。
二、TensorFlow特征
1.高度的靈活性
TensorFlow 不是一個嚴(yán)格的“神經(jīng)網(wǎng)絡(luò)”庫。只要你可以將你的計算表示為一個數(shù)據(jù)流圖,你就可以使用Tensorflow。你來構(gòu)建圖,描寫驅(qū)動計算的內(nèi)部循環(huán)。我們提供了有用的工具來幫助你組裝“子圖”(常用于神經(jīng)網(wǎng)絡(luò)),當(dāng)然用戶也可以自己在Tensorflow基礎(chǔ)上寫自己的“上層庫”。定義順手好用的新復(fù)合操作和寫一個python函數(shù)一樣容易,而且也不用擔(dān)心性能損耗。當(dāng)然萬一你發(fā)現(xiàn)找不到想要的底層數(shù)據(jù)操作,你也可以自己寫一點c++代碼來豐富底層的操作。
2.可移植性
Tensorflow 在CPU和GPU上運行,比如說可以運行在臺式機、服務(wù)器、手機移動設(shè)備等等。想要在沒有特殊硬件的前提下,在你的筆記本上跑一下機器學(xué)習(xí)的新想法?Tensorflow可以辦到這點。準(zhǔn)備將你的訓(xùn)練模型在多個CPU上規(guī)模化運算,又不想修改代碼?Tensorflow可以辦到這點。想要將你的訓(xùn)練好的模型作為產(chǎn)品的一部分用到手機app里?Tensorflow可以辦到這點。你改變主意了,想要將你的模型作為云端服務(wù)運行在自己的服務(wù)器上,或者運行在Docker容器里?Tensorfow也能辦到。
3.科研、產(chǎn)品緊密相聯(lián)
過去如果要將科研中的機器學(xué)習(xí)想法用到產(chǎn)品中,需要大量的代碼重寫工作。那樣的日子一去不復(fù)返了!在Google,科學(xué)家用Tensorflow嘗試新的算法,產(chǎn)品團隊則用Tensorflow來訓(xùn)練和使用計算模型,并直接提供給在線用戶。使用Tensorflow可以讓應(yīng)用型研究者將想法迅速運用到產(chǎn)品中,也可以讓學(xué)術(shù)性研究者更直接地彼此分享代碼,從而提高科研產(chǎn)出率。
4.自動求微分
基于梯度的機器學(xué)習(xí)算法會受益于Tensorflow自動求微分的能力。作為Tensorflow用戶,你只需要定義預(yù)測模型的結(jié)構(gòu),將這個結(jié)構(gòu)和目標(biāo)函數(shù)(objective function)結(jié)合在一起,并添加數(shù)據(jù),Tensorflow將自動為你計算相關(guān)的微分導(dǎo)數(shù)。計算某個變量相對于其他變量的導(dǎo)數(shù)僅僅是通過擴展你的圖來完成的,所以你能一直清楚看到究竟在發(fā)生什么。
5.多語言支持
Tensorflow 有一個合理的c++使用界面,也有一個易用的python使用界面來構(gòu)建和執(zhí)行你的graphs。你可以直接寫python/c++程序,也可以用交互式的ipython界面來用Tensorflow嘗試些想法,它可以幫你將筆記、代碼、可視化等有條理地歸置好。當(dāng)然這僅僅是個起點——我們希望能鼓勵你創(chuàng)造自己最喜歡的語言界面,比如Go,Java,Lua,Javascript,或者是R。
6.性能最優(yōu)化
比如說你又一個32個CPU內(nèi)核、4個GPU顯卡的工作站,想要將你工作站的計算潛能全發(fā)揮出來?由于Tensorflow 給予了線程、隊列、異步操作等以最佳的支持,Tensorflow 讓你可以將你手邊硬件的計算潛能全部發(fā)揮出來。你可以自由地將Tensorflow圖中的計算元素分配到不同設(shè)備上,Tensorflow可以幫你管理好這些不同副本。
以上便是此次小編帶來的“tensorflow”相關(guān)內(nèi)容,通過本文,希望大家對tensorflow張量和tensorflow的幾大特征具備一定的認(rèn)知。如果你喜歡本文,不妨持續(xù)關(guān)注我們網(wǎng)站哦,小編將于后期帶來更多精彩內(nèi)容。最后,十分感謝大家的閱讀,have a nice day!