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