人妻系列无码专区av在线,国内精品久久久久久婷婷,久草视频在线播放,精品国产线拍大陆久久尤物

當(dāng)前位置:首頁 > 軟件開發(fā) > 正文

tensorflow怎么用,tensorflow菜鳥教程

tensorflow怎么用,tensorflow菜鳥教程

大家好,tensorflow怎么用相信很多的網(wǎng)友都不是很明白,包括tensorflow菜鳥教程也是一樣,不過沒有關(guān)系,接下來就來為大家分享關(guān)于tensorflow怎么用...

大家好,tensorflow怎么用相信很多的網(wǎng)友都不是很明白,包括tensorflow菜鳥教程也是一樣,不過沒有關(guān)系,接下來就來為大家分享關(guān)于tensorflow怎么用和tensorflow菜鳥教程的一些知識點(diǎn),大家可以關(guān)注收藏,免得下次來找不到哦,下面我們開始吧!

如何學(xué)習(xí)tensorflow

tensorflow是目前非常流行的基于Python的機(jī)器學(xué)習(xí)框架,先要學(xué)一些python基礎(chǔ),如果沒有學(xué)過python,可以先找一些python入門的教程來學(xué)習(xí),了解一些基礎(chǔ)的語法,能編寫和運(yùn)行簡單的python程序即可;

tensorflow的網(wǎng)上教程很多的,官方網(wǎng)站上就有免費(fèi)教程:https://tensorflow.google.cn/resources/learn-ml

https://tensorflow.google.cn/tutorials/

如果您想找老師輔導(dǎo)您學(xué)習(xí)tensorflow,可以報名一些收費(fèi)的tensorflow網(wǎng)絡(luò)課程來學(xué)習(xí)。

tensorflow哪個版本更新最好

tensorflow2.x版本最好

TensorFlow1和TensorFlow2.x之間有很多變化。第一個是Tensorflow.js.的發(fā)布。隨著Web應(yīng)用程序越來越占主導(dǎo)地位,在瀏覽器上部署模型的需求大大增加。借助Tensorflow.js,你可以使用Node在瀏覽器中運(yùn)行現(xiàn)有的python模型、重新訓(xùn)練現(xiàn)有的模型,并使用Javascript完全構(gòu)建和訓(xùn)練模型(不需要python)。

Tensorflow2.x中的另一個版本是TensorflowLite,一個輕量級庫,用于在移動和嵌入式設(shè)備上部署模型。這是因?yàn)橐苿雍蚖eb應(yīng)用程序是兩種最主要的應(yīng)用程序類型。使用TensorflowLite,你可以簡單地將現(xiàn)有模型轉(zhuǎn)換為「compressedflatbuffer」,然后將buffer加載到移動設(shè)備或任何其他嵌入式設(shè)備中。這期間發(fā)生的主要優(yōu)化過程是將32位浮點(diǎn)值轉(zhuǎn)換成8位,這更適合于嵌入式設(shè)備(更少的內(nèi)存使用)。

怎樣用C++寫出你自己的TensorFlow

在我們開始講解前,可以先看看最終成型的代碼:

1.分支與特征后端

2.僅支持標(biāo)量的分支

這個工程是我與MinhLe一起完成的。

為什么?

如果你修習(xí)的是計算機(jī)科學(xué)(CS)的人的話,你可能聽說過這個短語「不要自己動手____」幾千次了。它包含了加密,標(biāo)準(zhǔn)庫,解析器等等。我想到現(xiàn)在為止,它也應(yīng)該包含機(jī)器學(xué)習(xí)庫(MLlibrary)了。

不管現(xiàn)實(shí)是怎么樣的,這個震撼的課程都值得我們?nèi)W(xué)習(xí)。人們現(xiàn)在把TensorFlow和類似的庫當(dāng)作理所當(dāng)然了。他們把它看作黑盒子并讓他運(yùn)行起來,但是并沒有多少人知道在這背后的運(yùn)行原理。這只是一個非凸(Non-convex)的優(yōu)化問題!請停止對代碼無意義的胡搞——僅僅只是為了讓代碼看上去像是正確的。

TensorFlow

在TensorFlow的代碼里,有一個重要的組件,允許你將操作串在一起,形成一個稱為「圖形運(yùn)算符」(此處英文錯誤?正確英文應(yīng)為GraphOperator)的東西。這個操作圖是一個有向圖G=(V,E)G=(V,E),在某些節(jié)點(diǎn)處u1,u2,…,un,v∈Vu1,u2,…,un,v∈V,和e1,e2,…,en∈E,ei=(ui,v)e1,e2,…,en∈E,ei=(ui,v)。我們知道,存在某種操作圖從u1,…,unu1,…,un映射到vv.

舉個例子,如果我們有x+y=z,那么(x,z),(y,z)∈E(x,z),(y,z)∈E.

這對于評估算術(shù)表達(dá)式非常有用,我們能夠在操作圖的匯點(diǎn)下找到結(jié)果。匯點(diǎn)是類似v∈V,?e=(v,u)v∈V,?e=(v,u)這樣的頂點(diǎn)。從另一方面來說,這些頂點(diǎn)從自身到其他頂點(diǎn)并沒有定向邊界。同樣的,輸入源是v∈V,?e=(u,v)v∈V,?e=(u,v).

對于我們來說,我們總是把值放在輸入源上,而值也將傳播到匯點(diǎn)上。

反向模式分化

如果你覺得我的解釋不正確,可以參考下這些幻燈片的說明。

差異化是Tensorflow中許多模型的核心需求,因?yàn)槲覀冃枰荻认陆档倪\(yùn)行。每一個從高中畢業(yè)的人都應(yīng)該知道差異化的意思。如果是基于基礎(chǔ)函數(shù)組成的復(fù)雜函數(shù),則只需要求出函數(shù)的導(dǎo)數(shù),然后做鏈?zhǔn)椒▌t。

在5分鐘內(nèi)倒轉(zhuǎn)模式

所以現(xiàn)在請記住我們運(yùn)行操作符時用的有向無環(huán)結(jié)構(gòu)(DAG=DirectedAcyclicGraph=有向無環(huán)圖),還有上一個例子用到的鏈?zhǔn)椒▌t。做出評估,我們能看到像這樣的

x->h->g->f

作為一個圖表,在f它能夠給予我們答案。然而,我們也可以反過來:

dx<-dh<-dg<-df

這樣它看起來就像鏈?zhǔn)椒▌t了!我們需要把導(dǎo)數(shù)相乘到最終結(jié)果的路徑上。

這里是一個操作符的例子:

所以這將衰減為一個圖的遍歷問題。有誰感覺到這是個拓?fù)渑判蚝蜕疃葍?yōu)先搜索/寬度優(yōu)先搜索?

是的,所以為了在雙方面都支持拓?fù)渑判?,我們需要包含一套父組一套子組,而匯點(diǎn)是另一個方向的來源。反之亦然。

執(zhí)行

在學(xué)校開學(xué)前,MinhLe和我開始設(shè)計這個工程。我們決定使用后端的特征庫進(jìn)行線性代數(shù)的運(yùn)算。他們有一個叫做MatrixXd的矩陣類。我們在這兒使用那個東西。

classvar{//Forwarddeclarationstructimpl;public://Forinitializationofnewvarsbyptrvar(std::shared_ptr<impl>);var(double);var(constMatrixXd&);var(op_type,conststd::vector<var>&);...//Access/ModifythecurrentnodevalueMatrixXdgetValue()const;voidsetValue(constMatrixXd&);op_typegetOp()const;voidsetOp(op_type);//Accessinternals(nomodify)std::vector<var>&getChildren()const;std::vector<var>getParents()const;...private://PImplidiomrequiresforwarddeclarationoftheclass:std::shared_ptr<impl>pimpl;};structvar::impl{public:impl(constMatrixXd&);impl(op_type,conststd::vector<var>&);MatrixXdval;op_typeop;std::vector<var>children;std::vector<std::weak_ptr<impl>>parents;};

在這兒,我們曾使用過一個叫「pImpl」的習(xí)語,意識是「執(zhí)行的指針」。它對很多東西都很好,比如接口的解耦實(shí)現(xiàn),以及當(dāng)我們在堆棧上有一個本地接口時,允許我們實(shí)例化堆上的東西。一些「pImpl」的副作用是微弱的減慢運(yùn)行時間,但是編譯時間縮短了很多。這允許我們通過多個函數(shù)調(diào)用/返回來保持?jǐn)?shù)據(jù)結(jié)構(gòu)的持久性。像這樣的樹形數(shù)據(jù)結(jié)構(gòu)應(yīng)該是持久的。

我們有一些枚舉來告訴我們目前正在進(jìn)行哪些操作:

enumclassop_type{plus,minus,multiply,divide,exponent,log,polynomial,dot,...none//nooperators.leaf.};

執(zhí)行此樹的評估的實(shí)際類稱為expression:

classexpression{public:expression(var);...//Recursivelyevaluatesthetree.doublepropagate();...//Computesthederivativefortheentiregraph.//Performsatop-downevaluationofthetree.voidbackpropagate(std::unordered_map<var,double>&leaves);...private:varroot;};

在回溯里,我們有一些做成類似這樣的代碼:

backpropagate(node,dprev):

derivative=differentiate(node)*dprev

forchildinnode.children:

backpropagate(child,derivative)

這幾乎是在做一個深度優(yōu)先搜索;你看到了吧?

為什么是C++?

在實(shí)際過程中,C++可能不是合適的語言來做這些事兒。我們可以在像「Oaml」這樣的函數(shù)式語言中花費(fèi)更少的時間來開發(fā)。現(xiàn)在我明白為什么「Scala」被用于機(jī)器學(xué)習(xí)中,主要就是因?yàn)椤窼park」

然而,這很明顯有利于C++。

Eigen(庫名)

舉例來說,我們可以直接使用一個叫「Eigen」的TensorFlow的線性代數(shù)庫。這是一個不假思索就被人用爛了的線性代數(shù)庫。有一種類似于我們的表達(dá)式樹的味道,我們構(gòu)建表達(dá)式,它只會在我們真正需要的時候進(jìn)行評估。然而,對于「Eigen」來說,他們在編譯的時間內(nèi)就決定使用什么模版,這意味著運(yùn)行的時間減少了。我對寫出「Eigen」的人抱有很大的敬意,因?yàn)椴榭茨0娴腻e誤幾乎讓我眼瞎!

他們的代碼看起來類似這樣的:

MatrixA(...),B(...);autolazy_multiply=A.dot(B);typeid(lazy_multiply).name();//theclassnameissomethinglikeDot_Matrix_Matrix.Matrix(lazy_multiply);//functional-stylecastingforcesevaluationofthismatrix.

這個特征庫非常的強(qiáng)大,這就是為什么它是TensortFlow使用這些代碼作為主要后端之一的原因。這意味著除了這個慢吞吞的評估技術(shù)之外還有其他的優(yōu)化。

運(yùn)算符重載

在Java中開發(fā)這個庫很不錯——因?yàn)闆]有shared_ptrs,unique_ptrs,weak_ptrs;我們得到了一個真實(shí)的,有用的圖形計算器(GC=GraphingCalculator)。這大大節(jié)省了開發(fā)時間,更不必說更快的執(zhí)行速度。然而,Java不允許操作符重載,因此它們不能這樣:

//These3linescodeupanentireneuralnetwork!varsigm1=1/(1+exp(-1*dot(X,w1)));varsigm2=1/(1+exp(-1*dot(sigm1,w2)));varloss=sum(-1*(y*log(sigm2)+(1-y)*log(1-sigm2)));

順便說一下,上面是實(shí)際的代碼。是不是非常的漂亮?我想說的是對于TensorFlow里面,這比使用Python封裝來的更優(yōu)美!這只是讓你知道,它們也是矩陣而已。

在Java中,有一連串的add(),divide()等等是非常難看的。更重要的是,這將讓用戶更多的關(guān)注在「PEMDAS」上,而C++的操作符則有非常好的表現(xiàn)。

特性,而不是一連串的故障

在這個庫中,有一些東西是可以指定的,它沒有明確的應(yīng)用程序編程接口(API=ApplicationProgrammingInterface),或者有但我知道。舉例子,實(shí)際上,如果我們只想訓(xùn)練一個特定的權(quán)重子集,我們只可以回溯到我們感興趣的特定來源。這對于卷積神經(jīng)網(wǎng)絡(luò)的轉(zhuǎn)移學(xué)習(xí)非常有用,因?yàn)楹芏鄷r候,像VGG19這樣的大網(wǎng)絡(luò)被斬斷,會附加了一些額外的層,根據(jù)新的域名樣本來訓(xùn)練權(quán)重。

基準(zhǔn)

在Python的TensorFlow庫中,對虹膜數(shù)據(jù)集上的10000個「Epochs」進(jìn)行訓(xùn)練以進(jìn)行分類,并使用相同的超參數(shù),我們有:

1.TensorFlow的神經(jīng)網(wǎng)絡(luò):23812.5ms

2.「Scikit」的神經(jīng)網(wǎng)絡(luò):22412.2ms

3.「Autodiff」的神經(jīng)網(wǎng)絡(luò),迭代,優(yōu)化:25397.2ms

4.「Autodiff」的神經(jīng)網(wǎng)絡(luò),迭代,無優(yōu)化:29052.4ms

5.「Autodiff」的神經(jīng)網(wǎng)絡(luò),帶有遞歸,無優(yōu)化:28121.5ms

令人驚訝的是,Scikit是所有這些中最快的。這可能是因?yàn)槲覀儧]有做龐大的矩陣乘法。也可能是TensorFlow需要額外的編譯步驟,如變量初始化等等?;蛘撸苍S我們不得不在python中運(yùn)行循環(huán),而不是在C中(Python循環(huán)真的非常糟糕!)我對自己也不是很自信。我完全意識到,這絕不是一種全面的基準(zhǔn)測試,因?yàn)樵谔囟ǖ那闆r下,它只適用于單個數(shù)據(jù)點(diǎn)。然而,庫的表現(xiàn)并不能代表行為狀態(tài),因?yàn)槲覀儾恍枰貪L我們自己的TensorFlow。

如何用TensorFlow實(shí)現(xiàn)GAN

基本使用使用TensorFlow,必須明白TensorFlow:使用圖(graph)表示計算任務(wù).稱(Session)文(context)執(zhí)行圖.使用tensor表示數(shù)據(jù).通變量(Variable)維護(hù)狀態(tài).使用feedfetch任意操

tensorflow如何使用GPU來加速訓(xùn)練

Tensorflow支持GPU,而且默認(rèn)情況下,在操作同時支持GPU和CPU的情況下,會優(yōu)先使用GPU。所以Tensorflow的GPU加速訓(xùn)練是開箱即用的,唯一需要注意的是安裝的時候不要裝錯了版本。

如何安裝正確版本

首先,確保你的硬件沒問題。一般來說,不是太老或太低端的N卡基本上都沒問題。具體支持的硬件可以查看Nvidia的文檔(https://developer.nvidia.com/cuda-gpus),根據(jù)你的顯卡所屬的系列,查看是否支持(需要支持CUDA3.5以上,CUDA3.0以上,但小于3.5的話,需要通過源碼編譯安裝Tensorflow)。

(Nvidia網(wǎng)站截屏)

其次,確保你的軟件依賴沒問題:

顯卡驅(qū)動CUDAToolkit9.0cuDNNSDKv7libcupti-devNVIDIATensorRT3.0(可選)

然后,就是安裝TensorFlow了。

注意,通過`pipinstalltensorflow`安裝的是CPU版本!你需要使用`pipinstalltensorflow-gpu`!pip3同理。相應(yīng)地,如果你選擇通過docker安裝,也別忘了加上-gpu后綴,比如`nvidia-dockerrun-ittensorflow/tensorflow:latest-gpubash`。

現(xiàn)在對TensorFlow很感興趣很想學(xué),想全面初步了解一下,有相關(guān)文章嗎

人工智能無疑是當(dāng)今科技屆的熱點(diǎn)領(lǐng)域,各大公司也在大力的投入。深度學(xué)習(xí)作為其熱門技術(shù),期間也產(chǎn)生了各種各樣的深度學(xué)習(xí)智能框架。比如TensorFlow,Caffe,CNTK,Theano等等,其中TensorFlow毋庸置疑的成為了最熱的熱點(diǎn)。那么對于非專業(yè)研究者的開發(fā)人員甚至非開發(fā)人員,我們?nèi)绾稳腴T呢?接下來小編為大家整理了一些深度學(xué)習(xí)TensorFlow的入門資源。(主要是一些長期教程)

官網(wǎng)https://www.tensorflow.org/

官網(wǎng)無論什么都是入門必看的重點(diǎn)。官網(wǎng)介紹了,如何安裝使用TensorFlow,已經(jīng)TensorFlow的API文檔。里面還包含TensorFlow主要功能的詳細(xì)指南。這里就不過多的介紹了

Kerashttp://keras-cn.readthedocs.io/en/latest/

Keras是一個高層神經(jīng)網(wǎng)絡(luò)API,Keras由純Python編寫而成并基Tensorflow、Theano以及CNTK后端。Keras為支持快速實(shí)驗(yàn)而生,能夠把你的idea迅速轉(zhuǎn)換為結(jié)果,如果你有如下需求,請選擇Keras:

簡易和快速的原型設(shè)計(keras具有高度模塊化,極簡,和可擴(kuò)充特性)

支持CNN和RNN,或二者的結(jié)合

無縫CPU和GPU切換

為什么我會推薦Keras呢,因?yàn)閺腡ensorFlow1.0開始,官方已經(jīng)正式在TF中加入了Keras,同時,他的便捷性和簡單性也值得使用。

谷歌機(jī)器學(xué)習(xí)速成課程https://developers.google.com/machine-learning/crash-course/

這是谷歌推出的機(jī)器學(xué)習(xí)熱愛者的自學(xué)指南,包含一系列視頻講座課程、實(shí)際案例分析和實(shí)踐練習(xí)??梢栽诳匆曨l后,進(jìn)行一些檢驗(yàn),也包含一些代碼的訓(xùn)練。是一套不存的視頻課程,而且全面支持中文(PS:機(jī)器學(xué)習(xí)生成的中文口音,怪怪的)

Udacity優(yōu)達(dá)學(xué)城https://cn.udacity.com/course/deep-learning--ud730

谷歌在Udacity上的深度學(xué)習(xí)課程,在這里你將透徹理解深度學(xué)習(xí),教授你如何訓(xùn)練和優(yōu)化基本神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)和長期神經(jīng)網(wǎng)絡(luò)。解決學(xué)習(xí)一系列曾經(jīng)以為非常具有挑戰(zhàn)性的新問題,并在你用深度學(xué)習(xí)方法輕松解決這些問題的過程中更好地了解人工智能的復(fù)雜屬性??傊且惶缀懿诲e教學(xué)視頻,包含課后習(xí)題。這個教學(xué)項(xiàng)目目前是免費(fèi)的。

莫煩Pythonhttps://morvanzhou.github.io/

我在最早接觸Python和深度學(xué)習(xí)就是在這里,一個喜歡學(xué)到什么就分享什么的人,分享過很多python,機(jī)器學(xué)習(xí)的知識。非常不錯的教學(xué)視頻,重點(diǎn)是都是中文的。

廖雪峰https://www.liaoxuefeng.com/

小白的Python新手教程,具有如下特點(diǎn):中文,免費(fèi),零起點(diǎn),完整示例,基于最新的Python3版本。一個非常棒的Python學(xué)習(xí)網(wǎng)站,TensorFlow最適合的語言自然是Python了,值得學(xué)習(xí)。

Stanford的CS20SI課程,專門針對TensorFlow的課程https://web.stanford.edu/class/cs20si/

斯坦福大學(xué)的TensorFlow學(xué)習(xí)課程,英文的所有一定難度。課程將涵蓋Tensorflow的基本原理和用法。旨在幫助學(xué)生理解TensorFlow的圖形計算模型,探索其提供的功能,并學(xué)習(xí)如何構(gòu)建和構(gòu)建最適合深度學(xué)習(xí)項(xiàng)目的模型。通過課程,學(xué)生將使用TensorFlow構(gòu)建不同復(fù)雜度的模型,從簡單的線性/邏輯回歸到卷積神經(jīng)網(wǎng)絡(luò)和遞歸神經(jīng)網(wǎng)絡(luò),以解決詞嵌入,翻譯,光學(xué)字符識別,強(qiáng)化學(xué)習(xí)等任務(wù)。學(xué)生還將學(xué)習(xí)最佳實(shí)踐來構(gòu)建模型并管理研究實(shí)驗(yàn)。

重點(diǎn)!網(wǎng)紅SirajRavalhttps://www.youtube.com/channel/UCWN3xxRkmTPmbKwht9FuE5A

這是我最喜歡的一個頻道,SirajRaval已經(jīng)成為了一位網(wǎng)紅,天成的程序員表演家,技術(shù)達(dá)人。他分享了大量的機(jī)器學(xué)習(xí)視頻,風(fēng)趣而幽默。而且每個視頻下都配了他的Github倉庫,里面有他寫好的代碼。他的視頻風(fēng)格讓人印象非常深刻。是一個很不錯的學(xué)習(xí)頻道。

上述只是我列的一些幫助我們?nèi)腴T的教程,是非常入門的。更適合像我們這些沒有太深數(shù)學(xué)基礎(chǔ)的程序員和非程序員。以后還會給大家發(fā)一些深度一些的資源,歡迎大家持續(xù)關(guān)注。

OK,本文到此結(jié)束,希望對大家有所幫助。