真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語言深度學習,深入理解go語言

極客時間的GO語言進階訓練營怎么樣?

極客時間的GO語言進階訓練營是很不錯,知識內容涉及比較全面,從編程語言到中間件、系統(tǒng)設計再到架構都安排了相關課程,老師們在課程中不講語法和用法,重點傳遞設計原理和最佳實踐,講課的過程中貼合工作場景,分享真實的干貨案例,啟發(fā)學員的思維讓其自主進行學習,還幫學員建立系統(tǒng)大局觀,有助于學員深層次的提升。

創(chuàng)新互聯(lián)服務項目包括綏德網(wǎng)站建設、綏德網(wǎng)站制作、綏德網(wǎng)頁制作以及綏德網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,綏德網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到綏德省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!

程序員為什么要學深度學習

費良宏:程序員為什么要學深度學習?

深度學習本身是一個非常龐大的知識體系。本文更多想從程序員的視角出發(fā),讓大家觀察一下深度學習對程序員意味著什么,以及我們如何利用這樣一個高速發(fā)展的學科,來幫助程序員提升軟件開發(fā)的能力。

本文根據(jù)費良宏在2016QCon全球軟件開發(fā)大會(上海)上的演講整理而成。

前言

1973年,美國上映了一部熱門的科幻電影《WestWorld》,三年之后又有一個續(xù)集叫做《FutureWorld》。這部電影在80年代初被引進到中國叫《未來世界》。那部電影對我來講簡直可以說得上是震撼。影片中出現(xiàn)了很多機器人,表情豐富的面部下面都是集成電路板。這讓那時候的我覺得未來世界都是那么遙遠、那么神秘。

時間到了2016年,很多朋友可能都在追看HBO斥巨資拍攝的同一題材的系列劇《WestWorld》。如果前兩部電影還是局限在機器人、人工智能這樣的話題,2016年的新劇則在劇情和人工智能的思考方面有了很大的突破。不再渲染機器人是否會威脅到人類,而是在探討“Dreamsaremainlymemories”這一類更具哲理的問題。

“記憶究竟如何影響了智能”這個話題非常值得我們去思考,也給我們一個很好的啟示——今天,人工智能領域究竟有了怎樣的發(fā)展和進步。

今天我們探討的話題不僅僅是簡單的人工智能。如果大家對深度學習感興趣,我相信各位一定會在搜索引擎上搜索過類似相關的關鍵字。我在Google上以deeplearning作為關鍵字得到了2,630萬個搜索的結果。這個數(shù)字比一周之前足足多出了300多萬的結果。這個數(shù)字足以看得出來深度學習相關的內容發(fā)展的速度,人們對深度學習的關注也越來越高。

從另外的一個角度,我想讓大家看看深度學習在市場上究竟有多么熱門。從2011年到現(xiàn)在一共有140多家專注人工智能、深度學習相關的創(chuàng)業(yè)公司被收購。僅僅在2016年這種并購就發(fā)生了40多起。

其中最瘋狂的是就是Google,已經(jīng)收購了 11 家人工智能創(chuàng)業(yè)公司,其中最有名的就是擊敗了李世石九段的 DeepMind。排名之后的就要數(shù) Apple、Intel以及Twitter。以Intel 公司為例,僅在今年就已經(jīng)收購了 3 家創(chuàng)業(yè)公司,Itseez、Nervana 和 Movidius。這一系列大手筆的并購為了布局人工智能以及深度學習的領域。

當我們去搜索深度學習話題的時候,經(jīng)常會看到這樣的一些晦澀難懂的術語:Gradient descent(梯度下降算法)、Backpropagation(反向傳播算法)、Convolutional Neural Network(卷積神經(jīng)網(wǎng)絡)、受限玻耳茲曼機(Restricted Boltzmann Machine)等。

如打開任何一篇技術文章,你看到的通篇都是各種數(shù)學公式。大家看到如下左邊的圖,其實并不是一篇高水準的學術論文,而僅僅是維基百科關于玻耳茲曼機的介紹。維基百科是科普層面的內容,內容復雜程度就超過了大多數(shù)數(shù)學知識的能力。

在這樣的背景之下,我今天的的話題可以歸納成三點:第一,我們?yōu)槭裁匆獙W習深度學習;第二,深度學習最核心的關鍵概念就是神經(jīng)網(wǎng)絡,那么究竟什么是神經(jīng)網(wǎng)絡;第三,作為程序員,當我們想要成為深度學習開發(fā)者的時候,我們需要具備怎樣的工具箱,以及從哪里著手進行開發(fā)。

為什么要學習深度學習

首先,我們談談為什么要學習深度學習。在這個市場當中,最不缺乏的就是各種概念以及各種時髦新技術的詞匯。深度學習有什么不一樣的地方?我非常喜歡AndrewNg(吳恩達)曾經(jīng)用過的一個比喻。

他把深度學習比喻成一個火箭。這個火箭有一個最重要的部分,就是它的引擎,目前來看在這個領域里面,引擎的核心就是神經(jīng)網(wǎng)絡。大家都知道,火箭除了引擎之外還需要有燃料,那么大數(shù)據(jù)其實就構成了整個火箭另外的重要組成部分——燃料。以往我們談到大數(shù)據(jù)的時候,更多是強調存儲和管理數(shù)據(jù)的能力,但是這些方法和工具更多是對于以往歷史數(shù)據(jù)的統(tǒng)計、匯總。

而對于今后未知的東西,這些傳統(tǒng)的方法并不能夠幫助我們可以從大數(shù)據(jù)中得出預測的結論。如果考慮到神經(jīng)網(wǎng)絡和大數(shù)據(jù)結合,我們才可能看清楚大數(shù)據(jù)真正的價值和意義。AndrewNg就曾經(jīng)說過“我們相信(神經(jīng)網(wǎng)絡代表的深度學習)是讓我們獲得最接近于人工智能的捷徑”。這就是我們要學習深度學習的一個最重要的原因。

其次,隨著我們進行數(shù)據(jù)處理以及運算能力的不斷提升,深度學習所代表的人工智能技術和傳統(tǒng)意義上人工智能技術比較起來,在性能上有了突飛猛進的發(fā)展。這主要得益于在過去幾十間計算機和相關產(chǎn)業(yè)不斷發(fā)展帶來的成果。在人工智能的領域,性能是我們選擇深度學習另一個重要的原因。

這是一段Nvidia在今年公布的關于深度學習在無人駕駛領域應用的視頻。我們可以看到,將深度學習應用在自動駕駛方面,僅僅經(jīng)歷了3千英里的訓練,就可以達到什么樣的程度。在今年年初進行的實驗上,這個系統(tǒng)還不具備真正智能能力,經(jīng)常會出現(xiàn)各種各樣的讓人提心吊膽的狀況,甚至在某些情況下還需要人工干預。

但經(jīng)過了3千英里的訓練之后,我們看到在山路、公路、泥地等各種復雜的路況下面,無人駕駛已經(jīng)有了一個非常驚人的表現(xiàn)。請大家注意,這個深度學習的模型只經(jīng)過了短短幾個月、3千英里的訓練。

如果我們不斷完善這種模型的話,這種處理能力將會變得何等的強大。這個場景里面最重要的技術無疑就是深度學習。我們可以得出一個結論:深度學習可以為我們提供強大的能力,如果程序員擁有了這個技術的話,無異于會讓每個程序員如虎添翼。

神經(jīng)網(wǎng)絡快速入門

如果我們對于學習深度學習沒有任何疑慮的話,接下來就一定會關心我需要掌握什么樣的知識才能讓我進入到這個領域。這里面最重要的關鍵技術就是“神經(jīng)網(wǎng)絡”。說起“神經(jīng)網(wǎng)絡”,容易混淆是這樣兩個完全不同的概念。

一個是生物學神經(jīng)網(wǎng)絡,第二個才是我們今天要談起的人工智能神經(jīng)網(wǎng)絡??赡茉谧母魑挥信笥言趶氖氯斯ぶ悄芊矫娴墓ぷ?。當你向他請教神經(jīng)網(wǎng)絡的時候,他會拋出許多陌生的概念和術語讓你聽起來云里霧里,而你只能望而卻步了。

對于人工智能神經(jīng)網(wǎng)絡這個概念,大多數(shù)的程序員都會覺得距離自己有很大的距離。因為很難有人愿意花時間跟你分享神經(jīng)網(wǎng)絡的本質究竟是什么。而你從書本上讀的到的理論和概念,也很讓你找到一個清晰、簡單的結論。

今天就我們來看一看,從程序員角度出發(fā)神經(jīng)網(wǎng)絡究竟是什么。我第一次知道神經(jīng)網(wǎng)絡這個概念是通過一部電影——1991年上映的《終結者2》。男主角施瓦辛格有一句臺詞:

“MyCPUisaneural-netprocessor;alearningcomputer.”(我的處理器是一個神經(jīng)處理單元,它是一臺可以學習的計算機)。從歷史來看人類對自身智力的探索,遠遠早于對于神經(jīng)網(wǎng)絡的研究。

1852年,意大利學者因為一個偶然的失誤,將人類的頭顱掉到硝酸鹽溶液中,從而獲得第一次通過肉眼關注神經(jīng)網(wǎng)絡的機會。這個意外加速了對人類智力奧秘的探索,開啟了人工智能、神經(jīng)元這樣概念的發(fā)展。

生物神經(jīng)網(wǎng)絡這個概念的發(fā)展,和今天我們談的神經(jīng)網(wǎng)絡有什么關系嗎?我們今天談到的神經(jīng)網(wǎng)絡,除了在部分名詞上借鑒了生物學神經(jīng)網(wǎng)絡之外,跟生物學神經(jīng)網(wǎng)絡已經(jīng)沒有任何關系,它已經(jīng)完全是數(shù)學和計算機領域的概念,這也是人工智能發(fā)展成熟的標志。這點大家要區(qū)分開,不要把生物神經(jīng)網(wǎng)絡跟我們今天談到的人工智能有任何的混淆。

90年代中期,由Vapnik等人提出了支持向量機算法(Support Vector Machines,支持向量機)。很快這個算法就在很多方面體現(xiàn)出了對比神經(jīng)網(wǎng)絡的巨大優(yōu)勢,例如:無需調參、高效率、全局最優(yōu)解等。基于這些理由,SVM算法迅速打敗了神經(jīng)網(wǎng)絡算法成為那個時期的主流。而神經(jīng)網(wǎng)絡的研究則再次陷入了冰河期。

在被人摒棄的十年里面,有幾個學者仍然在堅持研究。其中很重要的一個人就是加拿大多倫多大學的Geoffery Hinton教授。2006年,他的在著名的《Science》雜志上發(fā)表了論文,首次提出了“深度信念網(wǎng)絡”的概念。

與傳統(tǒng)的訓練方式不同,“深度信念網(wǎng)絡”有一個“預訓練”(pre-training)的過程,這可以方便的讓神經(jīng)網(wǎng)絡中的權值找到一個接近最優(yōu)解的值,之后再使用“微調”(fine-tuning)技術來對整個網(wǎng)絡進行優(yōu)化訓練。這兩個技術的運用大幅度減少了訓練多層神經(jīng)網(wǎng)絡的時間。在他的論文里面,他給多層神經(jīng)網(wǎng)絡相關的學習方法賦予了一個新名詞— “深度學習”。

很快,深度學習在語音識別領域嶄露頭角。接著在2012年,深度學習技術又在圖像識別領域大展拳腳。Hinton與他的學生在ImageNet競賽中,用多層的卷積神經(jīng)網(wǎng)絡成功地對包含一千個類別的一百萬張圖片進行了訓練,取得了分類錯誤率15%的好成績,這個成績比第二名高了將近11個百分點。

這個結果充分證明了多層神經(jīng)網(wǎng)絡識別效果的優(yōu)越性。從那時起,深度學習就開啟了新的一段黃金時期。我們看到今天深度學習和神經(jīng)網(wǎng)絡的火熱發(fā)展,就是從那個時候開始引爆的。

利用神經(jīng)網(wǎng)絡構建分類器,這個神經(jīng)網(wǎng)絡的結構是怎樣的?

其實這個結構非常簡單,我們看到這個圖就是簡單神經(jīng)網(wǎng)絡的示意圖。神經(jīng)網(wǎng)絡本質上就是一種“有向圖”。圖上的每個節(jié)點借用了生物學的術語就有了一個新的名詞 – “神經(jīng)元”。連接神經(jīng)元的具有指向性的連線(有向弧)則被看作是“神經(jīng)”。這這個圖上神經(jīng)元并不是最重要的,最重要的是連接神經(jīng)元的神經(jīng)。每個神經(jīng)部分有指向性,每一個神經(jīng)元會指向下一層的節(jié)點。

節(jié)點是分層的,每個節(jié)點指向上一層節(jié)點。同層節(jié)點沒有連接,并且不能越過上一層節(jié)點。每個弧上有一個值,我們通常稱之為”權重“。通過權重就可以有一個公式計算出它們所指的節(jié)點的值。這個權重值是多少?我們是通過訓練得出結果。它們的初始賦值往往通過隨機數(shù)開始,然后訓練得到的最逼近真實值的結果作為模型,并可以被反復使用。這個結果就是我們說的訓練過的分類器。

節(jié)點分成輸入節(jié)點和輸出節(jié)點,中間稱為隱層。簡單來說,我們有數(shù)據(jù)輸入項,中間不同的多個層次的神經(jīng)網(wǎng)絡層次,就是我們說的隱層。之所以在這樣稱呼,因為對我們來講這些層次是不可見的。輸出結果也被稱作輸出節(jié)點,輸出節(jié)點是有限的數(shù)量,輸入節(jié)點也是有限數(shù)量,隱層是我們可以設計的模型部分,這就是最簡單的神經(jīng)網(wǎng)絡概念。

如果簡單做一個簡單的類比,我想用四層神經(jīng)網(wǎng)絡做一個解釋。左邊是輸入節(jié)點,我們看到有若干輸入項,這可能代表不同蘋果的RGB值、味道或者其它輸入進來的數(shù)據(jù)項。中間隱層就是我們設計出來的神經(jīng)網(wǎng)絡,這個網(wǎng)絡現(xiàn)在有不同的層次,層次之間權重是我們不斷訓練獲得一個結果。

最后輸出的結果,保存在輸出節(jié)點里面,每一次像一個流向一樣,神經(jīng)是有一個指向的,通過不同層進行不同的計算。在隱層當中,每一個節(jié)點輸入的結果計算之后作為下一層的輸入項,最終結果會保存在輸出節(jié)點上,輸出值最接近我們的分類,得到某一個值,就被分成某一類。這就是使用神經(jīng)網(wǎng)絡的簡單概述。

除了從左到右的形式表達的結構圖,還有一種常見的表達形式是從下到上來表示一個神經(jīng)網(wǎng)絡。這時候,輸入層在圖的最下方,輸出層則在圖的最上方。從左到右的表達形式以AndrewNg和LeCun的文獻使用較多。而在Caffe框架里則使用的則是從下到上的表達。

簡單來說,神經(jīng)網(wǎng)絡并不神秘,它就是有像圖,利用圖的處理能力幫助我們對特征的提取和學習的過程。2006年Hinton的那篇著名的論文中,將深度學習總結成三個最重要的要素:計算、數(shù)據(jù)、模型。有了這三點,就可以實現(xiàn)一個深度學習的系統(tǒng)。

程序員需要的工具箱

對于程序員來說,掌握理論知識是為了更好的編程實踐。那就讓我們看看,對于程序員來說,著手深度學習的實踐需要準備什么樣的工具。

硬件

從硬件來講,我們可能需要的計算能力,首先想到的就是CPU。除了通常的CPU架構以外,還出現(xiàn)了附加有乘法器的CPU,用以提升計算能力。此外在不同領域會有DSP的應用場景,比如手寫體識別、語音識別、等使用的專用的信號處理器。還有一類就是GPU,這是一個目前深度學習應用比較熱門的領域。最后一類就是FPGA(可編程邏輯門陣列)。

這四種方法各有其優(yōu)缺點,每種產(chǎn)品會有很大的差異。相比較而言CPU雖然運算能力弱一些,但是擅長管理和調度,比如讀取數(shù)據(jù),管理文件,人機交互等,工具也豐富。DSP相比而言管理能力較弱,但是強化了特定的運算能力。

這兩者都是靠高主頻來解決運算量的問題,適合有大量遞歸操作以及不便拆分的算法。GPU的管理能力更弱一些,但是運算能力更強。但由于計算單元數(shù)量多,更適合整塊數(shù)據(jù)進行流處理的算法。

FPGA在管理與運算處理方面都很強,但是開發(fā)周期長,復雜算法開發(fā)難度較大。就實時性來說,F(xiàn)PGA是最高的。單從目前的發(fā)展來看,對于普通程序員來說,現(xiàn)實中普遍采用的計算資源就還是是CPU以及GPU的模式,其中GPU是最熱門的領域。

這是我前天為這次分享而準備的一個AWS 上p2的實例。僅僅通過幾條命令就完成了實例的更新、驅動的安裝和環(huán)境的設置,總共的資源創(chuàng)建、設置時間大概在10分鐘以內。而之前,我安裝調試前面提到的那臺計算機,足足花了我兩天時間。

另外,從成本上還可以做一個對比。p2.8xLarge 實例每小時的費用是7.2美元。而我自己那臺計算機總共的花費了是¥16,904元。這個成本足夠讓我使用350多個小時的p2.8xLarge。在一年里使用AWS深度學習站就可以抵消掉我所有的付出。隨著技術的不斷的升級換代,我可以不斷的升級我的實例,從而可以用有限的成本獲得更大、更多的處理資源。這其實也是云計算的價值所在。

云計算和深度學習究竟有什么關系?今年的8月8號,在IDG網(wǎng)站上發(fā)表了一篇文章談到了這個話題。文章中做了這樣一個預言:如果深度學習的并行能力不斷提高,云計算所提供的處理能力也不斷發(fā)展,兩者結合可能會產(chǎn)生新一代的深度學習,將帶來更大影響和沖擊。這是需要大家考慮和重視的一個方向!

軟件

深度學習除了硬件的基礎環(huán)境之外。程序員會更關心與開發(fā)相關的軟件資源。這里我羅列了一些曾經(jīng)使用過的軟件框架和工具。

Scikit-learn是最為流行的一個Python機器學習庫。它具有如下吸引人的特點:簡單、高效且異常豐富的數(shù)據(jù)挖掘/數(shù)據(jù)分析算法實現(xiàn); 基于NumPy、SciPy以及matplotlib,從數(shù)據(jù)探索性分析,數(shù)據(jù)可視化到算法實現(xiàn),整個過程一體化實現(xiàn);開源,有非常豐富的學習文檔。

Caffe專注在卷及神經(jīng)網(wǎng)絡以及圖像處理。不過Caffe已經(jīng)很久沒有更新過了。這個框架的一個主要的開發(fā)者賈揚清也在今年跳槽去了Google。也許曾經(jīng)的霸主地位要讓位給他人了。

Theano 是一個非常靈活的Python 機器學習的庫。在研究領域非常流行,使用上非常方便易于定義復雜的模型。Tensorflow 的API 非常類似于Theano。我在今年北京的QCon 大會上也分享過關于Theano 的話題。

Jupyter notebook 是一個很強大的基于ipython的python代碼編輯器,部署在網(wǎng)頁上,可以非常方便的進行交互式的處理,很適合進行算法研究合數(shù)據(jù)處理。

Torch 是一個非常出色的機器學習的庫。它是由一個比較小眾的lua語言實現(xiàn)的。但是因為LuaJIT 的使用,程序的效率非常出色。Facebook在人工智能領域主打Torch,甚至現(xiàn)在推出了自己的升級版框架Torchnet。

深度學習的框架非常之多,是不是有一種亂花漸欲迷人眼的感覺?我今天向各位程序員重點介紹的是將是TensorFlow。這是2015年谷歌推出的開源的面向機器學習的開發(fā)框架,這也是Google第二代的深度學習的框架。很多公司都使用了TensorFlow開發(fā)了很多有意思的應用,效果很好。

用TensorFlow可以做什么?答案是它可以應用于回歸模型、神經(jīng)網(wǎng)絡以深度學習這幾個領域。在深度學習方面它集成了分布式表示、卷積神經(jīng)網(wǎng)絡(CNN)、遞歸神經(jīng)網(wǎng)絡(RNN) 以及長短期記憶人工神經(jīng)網(wǎng)絡(Long-Short Term Memory, LSTM)。

關于Tensorflow 首先要理解的概念就是Tensor。在辭典中對于這個詞的定義是張量,是一個可用來表示在一些向量、標量和其他張量之間的線性關系的多線性函數(shù)。實際上這個表述很難理解,用我自己的語言解釋Tensor 就是“N維數(shù)組”而已。

使用 TensorFlow, 作為程序員必須明白 TensorFlow這樣幾個基礎概念:它使用圖 (Graph) 來表示計算任務;在被稱之為 會話 (Session) 的上下文 (context) 中執(zhí)行圖;使用 Tensor 表示數(shù)據(jù);通過 變量 (Variable) 維護狀態(tài);使用 feed 和 fetch 可以為任意的操作(arbitrary operation) 賦值或者從其中獲取數(shù)據(jù)。

一句話總結就是,TensorFlow 就是有狀態(tài)圖的數(shù)據(jù)流圖計算環(huán)境,每個節(jié)點就是在做數(shù)據(jù)操作,然后提供依賴性和指向性,提供完整數(shù)據(jù)流。

TensorFlow安裝非常簡單,但官網(wǎng)提供下載的安裝包所支持的CUDA 的版本是7.5??紤]到CUDA 8 的讓人心動的新特以及不久就要正式發(fā)布的現(xiàn)狀。或許你想會考慮立即體驗CUDA 8,那么就只能通過編譯Tensorflow源代碼而獲得。目前TensorFlow已經(jīng)支持了Python2.7、3.3+。

此外,對于使用Python 語言的程序員還需要安裝所需要的一些庫,例如:numpy、protobuf等等。對于卷積處理而言,cuDNN是公認的性能最好的開發(fā)庫,請一定要安裝上。常規(guī)的Tensorsorflow的安裝很簡單,一條命令足矣:

$ pip3 install —upgrade

如果想評估一下或者簡單學習一下,還可以通過Docker進行安裝,安裝的命令如下:

$ docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow

TensorFlow有很多優(yōu)點。首先,目前為止,深度學習的開發(fā)框架里面TensorFlow的文檔做的最好,對程序員學習而言是非常好的一點。第二,TensorFlow有豐富的參考實例,作為參考學習起來非常容易。

第三,開發(fā)者社區(qū)活躍,在任何一個深度學習的社區(qū)里,都有大量關于TensorFlow的討論。第四,谷歌的支持力度非常大,從2015年到現(xiàn)在升級速度非??欤@是其他開源框架遠遠達不到的結果。

參考TensorFlow的白皮書,我們會看到未來TensorFlow還將會有巨大的發(fā)展?jié)摿?。讓我特別感興趣是這兩個方向。第一,支持跨多臺機器的 parallelisation。盡管在0.8版本中推出了并行化的能力,但是目前還不完善。隨著未來不斷發(fā)展,依托云計算的處理能力的提升這個特性將是非常讓人振奮的。

第二,支持更多的開發(fā)語言,對于開發(fā)者來說這是一個絕大的利好,通過使用自己擅長的語言使用TensorFlow應用。這些開發(fā)語言將會擴展到Java、Lua以及R 等。

在這里我想給大家展示一個應用Tensorflow 的例子。這個例子的代碼托管在這個網(wǎng)址上 。白俄羅斯的現(xiàn)代印象派藝術家Leonid Afremov善于用濃墨重彩來表現(xiàn)都市和風景題材,尤其是其雨景系列作品。他習慣用大色塊的鋪陳來營造光影效果,對反光物體和環(huán)境色的把握非常精準。

于是我就找到了一張上海東方明珠電視塔的一張攝影作品,我希望通過Tensorflow 去學習一下Leonid Afremov 的繪畫風格,并將這張東方明珠的照片處理成那種光影色彩豐富的作品風格。利用Tensorflow 以及上面提到的那個項目的代碼,在一個AWS 的p2類型的實例上進行了一個一千次的迭代,于是就得到了下圖這樣的處理結果。

這個處理的代碼只有350行里,模型使用了一個成名于2014年ImageNet比賽中的明星 VGG。這個模型非常好,特點就是“go depper”。

TensorFlow 做出這樣的作品,并不僅僅作為娛樂供大家一笑,還可以做更多有意思的事情。將剛才的處理能力推廣到視頻當中,就可以看到下圖這樣的效果,用梵高著名的作品”星月夜“的風格就加工成了這樣新的視頻風格。

可以想象一下,如果這種處理能力在更多領域得以應用,它會產(chǎn)生什么樣的神奇結果?前景是美好的,讓我們有無限遐想。事實上我們目前所從事的很多領域的應用開發(fā)都可以通過使用神經(jīng)網(wǎng)絡和深度學習來加以改變。對于深度學習而言,掌握它并不是難事。每一個程序員都可以很容易的掌握這種技術,利用所具備的資源,讓我們很快成為深度學習的程序開發(fā)人員。

結束語

未來究竟是什么樣,我們沒有辦法預言。有位作家Ray Kurzweil在2005年寫了《奇點臨近》一書。在這本書里面他明確告訴我們,那個時代很快到來。作為那個時代曙光前的人群,我們是不是有能力加速這個過程,利用我們學習的能力實現(xiàn)這個夢想呢?

中國人工智能的發(fā)展

人工智能的時代無疑已經(jīng)到來,這個時代需要的當然就是掌握了人工智能并將其解決具體問題的工程師。坦率的說,市場上這一類的工程師還屬于鳳毛麟角。職場上的薪酬待遇可以看得出來這樣的工程師的搶手的程度。人工智能這門學科發(fā)展到今天,就學術自身而言已經(jīng)具備了大規(guī)模產(chǎn)業(yè)化的能力。

所以說,對于工程師而言當務之急就是盡快的掌握應用人工智能的應用技術。當下在互聯(lián)網(wǎng)上關于人工智能的學習資料可以說已經(jīng)是“汗牛充棟”,那些具備了快速學習能力的工程師一定會在人工智能的大潮當中脫穎而出。

中國發(fā)展人工智能產(chǎn)業(yè)的環(huán)境已經(jīng)具備。無論從創(chuàng)業(yè)環(huán)境、人員的素質乃至市場的機遇而言完全具備了產(chǎn)生產(chǎn)業(yè)變革的一切條件。與美國相比較,在人工智能的許多領域中國團隊的表現(xiàn)也可以說是不逞多讓。就人工智能的技術層面而言,中國的工程師與全球最好的技術團隊正處于同一個起跑線上。

時不我待,中國的工程師是有機會在這個領域大展身手的。不過值得注意的是,要切忌兩點:一是好高騖遠,盲目與國外攀比。畢竟積累有長短,術業(yè)有專攻,我們要立足于已有的積累,尋求逐步的突破。二是一擁而上,盲目追求市場的風口。人工智能的工程化需要大量的基礎性的積累,并非一蹴而就簡單復制就可以成功。

中國的科研技術人員在人工智能領域的成就有目共睹。在王詠剛的一篇文章里面,他統(tǒng)計了從2013年到2015年SCI收錄的“深度學習”論文,中國在2014年和2015年超已經(jīng)超過了美國居于領跑者的位置。

另外一讓我感到驚訝的事情,Google的JeffDean在2016年發(fā)表過一篇名為《TensorFlow:Asystemforlarge-scalemachinelearning》的論文。文章的22個作者里面,明顯是中國名字的作者占已經(jīng)到了1/5。如果要列舉中國人/華人在人工智能領域里的大牛,吳恩達、孫劍、楊強、黃廣斌、馬毅、張大鵬……很容易就可以說出一大串。

對于中國來說目前的當務之急是人工智能技術的產(chǎn)業(yè)化,唯有如此我們才可以講科研/智力領域的優(yōu)勢轉化為整體的、全面的優(yōu)勢。在這一點上,中國是全球最大的消費市場以及制造業(yè)強國,我們完全有機會借助市場的優(yōu)勢成為這個領域的領先者。

硅谷創(chuàng)新企業(yè)

硅谷雖然去過許多回,但一直無緣在那里長期工作。在人工智能領域的市場我們聽到的更多是圍繞Google、Apple、Intel、Amazon這樣的一些大型科技公司的一舉一動。但是在美國市場上還有一大批小型的創(chuàng)業(yè)企業(yè)在人工智能這個領域有驚艷的表現(xiàn)。僅以硅谷區(qū)域的公司為例:

Captricity,提供了手寫數(shù)據(jù)的信息提取;

VIVLab,針對語音識別開發(fā)了虛擬助手服務;

TERADEEP,利用FPGA提供了高效的卷積神經(jīng)網(wǎng)絡的方案;

還有提供無人駕駛解決方案的NetraDyne。

這個名單還可以很長,還有許許多多正在利用人工智能技術試圖去創(chuàng)造歷史的團隊正在打造他們的夢想。這些團隊以及他們正在專注的領域是值得我們去學習和體會的。

2019年十大最佳深度學習框架

作者 | Python語音識別

來源 | 濤哥聊Python

雖然我們大多數(shù)人都驚嘆為什么DL這么好?在使用大量數(shù)據(jù)進行訓練時,它在準確性方面非常出色。近幾年隨著深度學習算法的發(fā)展,出現(xiàn)了很多深度學習的框架,這些框架各有所長,各具特色。下面將為大家介紹2019年最受歡迎的十大深度學習框架。

TensorFlow

谷歌的Tensorflow可以說是當今最受歡迎的深度學習框架。Gmail,Uber,Airbnb,Nvidia以及其他許多知名品牌都在使用。TF是目前深度學習的主流框架,Tensorflow主要特性:

TensorFlow支持python、JavaScript、C ++、Java和Go,C#和Julia等多種編程語言。 TF不僅擁有強大的計算集群,還可以在iOS和Android等移動平臺上運行模型。 TF編程入門難度較大。初學者需要仔細考慮神經(jīng)網(wǎng)絡的架構,正確評估輸入和輸出數(shù)據(jù)的維度和數(shù)量。 TF使用靜態(tài)計算圖進行操作 。也就是說我們需要先定義圖形,然后運行計算,如果我們需要對架構進行更改,我們會重新訓練模型。選擇這樣的方法是為了提高效率,但是許多現(xiàn)代神經(jīng)網(wǎng)絡工具能夠在學習過程中考慮改進而不會顯著降低學習速度。在這方面,TensorFlow的主要競爭對手是PyTorch 。

TensorFlow優(yōu)點:

它非常適合創(chuàng)建和試驗深度學習架構,便于數(shù)據(jù)集成,如輸入圖形,SQL表和圖像。 它得到谷歌的支持,這就說明該模型短期內不會被拋棄,因此值得投入時間來學習它。 PyTorch

Tensorflow之后用于深度學習的主要框架是PyTorch。PyTorch框架是Facebook開發(fā)的,已被Twitter和Salesforce等公司使用。

PyTorch基本特性:

與TensorFlow不同,PyTorch庫使用動態(tài)更新的圖形進行操作 。這意味著它可以在流程中更改體系結構。 在PyTorch中,您可以使用標準調試器 ,例如pdb或PyCharm。

PyTorch優(yōu)點:

訓練神經(jīng)網(wǎng)絡的過程簡單明了。同時,PyTorch支持數(shù)據(jù)并行和分布式學習模型,并且還包含許多預先訓練的模型。 PyTorch更適合小型項目和原型設計。 Sonnet

Sonnet深度學習框架是建立在TensorFlow的基礎之上。它是DeepMind用于創(chuàng)建具有復雜架構的神經(jīng)網(wǎng)絡。

Sonnet基本特性:

面向對象的庫,在開發(fā)神經(jīng)網(wǎng)絡(NN)或其他機器學習(ML)算法時更加抽象。 Sonnet的想法是構造對應于神經(jīng)網(wǎng)絡的特定部分的主要Python對象。此外,這些對象獨立地連接到計算TensorFlow圖。分離創(chuàng)建對象并將其與圖形相關聯(lián)的過程簡化了高級體系結構的設計。

Sonnet優(yōu)點:

Sonnet的主要優(yōu)點是可以使用它來重現(xiàn)DeepMind論文中展示的研究,比Keras更容易,因為DeepMind論文模型就是使用Sonnet搭建的。 Keras

Keras是一個機器學習框架,如果您擁有大量數(shù)據(jù)和/或你想快速入門深度學習,那么Keras將非常適合學習。Keras是TensorFlow高級集成APi,可以非常方便的和TensorFlow進行融合。這是我強烈推薦學習的一個庫。

Keras基本特性:

除了Tensorflow之外,Keras還是其他流行的庫(如Theano和CNTK)的高級API。 在Keras中更容易創(chuàng)建大規(guī)模的深度學習模型,但Keras框架環(huán)境配置比其他底層框架要復雜一些。

Keras優(yōu)點:

對于剛剛入門的人來說,Keras是最好的深度學習框架。它是學習和原型化簡單概念的理想選擇,可以理解各種模型和學習過程的本質。 Keras是一個簡潔的API。 可以快速幫助您創(chuàng)建應用程序。 Keras中代碼更加可讀和簡潔。 Keras模型序列化/反序列化API,回調和使用Python生成器的數(shù)據(jù)流非常成熟。

順便說一下TensorFlow和Keras的對比:

PS:Tensorflow處于底層框架:這和MXNet,Theano和PyTorch等框架一樣。包括實現(xiàn)諸如廣義矩陣 - 矩陣乘法和諸如卷積運算的神經(jīng)網(wǎng)絡原語之類的數(shù)學運算。

Keras處于高度集成框架。雖然更容易創(chuàng)建模型,但是面對復雜的網(wǎng)絡結構時可能不如TensorFlow。

MXNet

MXNet是一種高度可擴展的深度學習工具,可用于各種設備。雖然與TensorFlow相比,它似乎沒有被廣泛使用,但MXNet的增長可能會因為成為一個Apache項目而得到提升。

MXNet基本特性:

該框架支持多種語言,如C ++,Python,R,Julia,JavaScript,Scala,Go,甚至Perl。 可以在多個GPU和許多機器上非常有效地并行計算。

MXNet優(yōu)點:

支持多個GPU(具有優(yōu)化的計算和快速上下文切換) 清晰且易于維護的代碼(Python,R,Scala和其他API) 快速解決問題的能力(對于像我這樣的深度學習新手至關重要)

雖然它不像TF那么受歡迎,但MXNet具有詳細的文檔并且易于使用,能夠在命令式和符號式編程風格之間進行選擇,使其成為初學者和經(jīng)驗豐富的工程師的理想選擇。

GLUON

Gluon是一個更好的深度學習框架,可以用來創(chuàng)建復雜的模型。GLUON基本特性:

Gluon的特殊性是具有一個靈活的界面,簡化了原型設計,構建和培訓深度學習模型,而不會犧牲學習速度。 Gluon基于MXNet,提供簡單的API,簡化深度學習模型的創(chuàng)建。 與PyTorch類似,Gluon框架支持使用動態(tài)圖表 ,將其與高性能MXNet相結合。從這個角度來看,Gluon看起來像是分布式計算的Keras非常有趣的替代品。

GLUON優(yōu)點:

在Gluon中,您可以使用簡單,清晰和簡潔的代碼定義神經(jīng)網(wǎng)絡。 它將訓練算法和神經(jīng)網(wǎng)絡模型結合在一起,從而在不犧牲性能的情況下提供開發(fā)過程的靈活性。 Gluon可以定義動態(tài)的神經(jīng)網(wǎng)絡模型,這意味著它們可以動態(tài)構建,使用任何結構,并使用Python的任何本機控制流。 SWIFT

當你聽到Swift時,您可能會考慮iOS或MacOS的應用程序開發(fā)。但是如果你正在學習深度學習,那么你一定聽說過Swens for Tensorflow。通過直接與通用編程語言集成,Swift for TensorFlow可以以前所未有的方式表達更強大的算法。SWIFT基本特性:

可以輕松獲得可微分的自定義數(shù)據(jù)結構。 下一代API 。通過實踐和研究獲得的新API更易于使用且更強大。 在TensorFlow的基礎上 ,Swift API為您提供對所有底層TensorFlow運算符的直接調用。 基于Jupyter、LLDB或者Swift in Colab的編程工具提高了您的工作效率。

SWIFT優(yōu)點:

如果動態(tài)語言不適合您的任務,那么這將是一個很好的選擇。當你訓練運行了幾個小時,然后你的程序遇到類型錯誤,那么使用Swift,一種靜態(tài)類型語言。您將看到代碼錯誤的地方。 Chainer

直到CMU的DyNet和Facebook的PyTorch出現(xiàn)之前,Chainer是動態(tài)計算圖或網(wǎng)絡的領先神經(jīng)網(wǎng)絡框架,它允許輸入數(shù)據(jù)長度不一致。chainer基本特性:

Chainer代碼是在Numpy和CuPy庫的基礎之上用純Python編寫的, Chainer是第一個使用動態(tài)架構模型的框架。

Chainer優(yōu)點:

通過自己的基準測試,Chainer明顯比其他面向Python的框架更快,TensorFlow是包含MxNet和CNTK的測試組中最慢的。 比TensorFlow更好的GPU和GPU數(shù)據(jù)中心性能。最近Chainer成為GPU數(shù)據(jù)中心性能的全球冠軍。 DL4J

那些使用Java或Scala的人應該注意DL4J(Deep Learning for Java的簡稱)。DL4J的基本特性:

DL4J中的神經(jīng)網(wǎng)絡訓練通過簇的迭代并行計算。 該過程由Hadoop和Spark架構支持。 使用Java允許您在Android設備的程序開發(fā)周期中使用。

DL4J優(yōu)點:

如果您正在尋找一個良好的Java深度學習框架,這會是一個非常好的平臺。 ONNX

ONNX項目誕生于微軟和Facebook,旨在尋找深度學習模型呈現(xiàn)的開放格式。ONNX簡化了在人工智能的不同工作方式之間傳遞模型的過程。因此ONNX具有各種深度學習框架的優(yōu)點。

ONNX基本特性:

ONNX使模型能夠在一個框架中進行訓練并轉移到另一個框架中進行推理。ONNX模型目前在Caffe2,Microsoft Cognitive Toolkit,MXNet和PyTorch中得到支持,并且還有許多其他常見框架和庫的連接器。

ONNX優(yōu)點:

對于PyTorch開發(fā)人員來說,ONNX是一個好的選擇。但是對于那些喜歡TensorFlow的人來說,Keras等可能好一點。 總結

那么您應該使用哪種深度學習框架?下面是幾點建議:

如果你剛剛開始學習,那么最好的選擇是Keras 。 出于研究目的,請選擇PyTorch 。 對于生產(chǎn),您需要關注環(huán)境。因此對于Google Cloud,最好的選擇是TensorFlow ,適用于AWS - MXNet和Gluon 。 Android開發(fā)人員應該關注D4LJ ,對于iOS來說, Core ML會破壞類似的任務范圍。 最后, ONNX將幫助解決不同框架之間的交互問題。


分享題目:go語言深度學習,深入理解go語言
當前路徑:http://weahome.cn/article/dsggocj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部