天蠶在你身邊


不方便打電話(huà)?讓天蠶聯(lián)絡(luò )你

天蠶在你身邊
不方便打電話(huà)?讓天蠶聯(lián)絡(luò )你
開(kāi)源與專(zhuān)利軟件之爭
重慶網(wǎng)絡(luò )公司隨著(zhù)深度學(xué)習逐漸成熟,可以預知到我們將見(jiàn)證TensorFlow,Caffe2和MXNet的競賽。同時(shí),軟件供應商也在提供先進(jìn)的AI產(chǎn)品使你從數據中獲取更多價(jià)值。問(wèn)題是:你會(huì )購買(mǎi)帶有專(zhuān)利的AI產(chǎn)品還是使用開(kāi)源框架。如果使用開(kāi)源框架,你將會(huì )面臨哪種框架最適合你的問(wèn)題的選擇困難。而選擇專(zhuān)利軟件,你又將怎樣制定退出策略?任何一種選擇都需要長(cháng)遠考慮。
很多神經(jīng)網(wǎng)絡(luò )框架已開(kāi)源多年,支持機器學(xué)習和人工智能的專(zhuān)有解決方案也有很多。多年以來(lái),開(kāi)發(fā)人員在Github上發(fā)布了一系列的可以支持圖像、手寫(xiě)字、視頻、語(yǔ)音識別、自然語(yǔ)言處理、物體檢測的機器學(xué)習框架,但并沒(méi)有一種框架可以完美地解決你所有的需求。那么該如何選擇最適合你的開(kāi)源框架呢?希望下面帶有描述的圖表以及分析可以帶給你以啟發(fā),以此來(lái)選擇最適合你的業(yè)務(wù)需求的框架。下圖總結了絕大多數Github上的開(kāi)源深度學(xué)習框架項目,根據項目在Github的Star數量來(lái)評級。
TensorFlow
TensorFlow框架的前身是Google的DistBelief V2,是谷歌大腦項目的深度網(wǎng)絡(luò )工具庫,一些人認為T(mén)ensorFlow是借鑒Theano重構的。
Tensorflow一經(jīng)開(kāi)源,馬上引起了大量開(kāi)發(fā)者的跟進(jìn)。Tensorflow廣泛支持包括圖像、手寫(xiě)字、語(yǔ)音識別、預測和自然語(yǔ)言處理等大量功能。TensorFlow遵循Apache 2.0開(kāi)源協(xié)議。
TensorFLow提供這些工具:
TensorBroad是一個(gè)設計優(yōu)良的可視化網(wǎng)絡(luò )構建和展示工具;
TensorFlow的0.12版本支持Windows 7, 8, Server 2016系統。由于采用C++ Eigen庫,TensorFlow類(lèi)庫可以在A(yíng)RM架構平臺上編譯和優(yōu)化。這意味著(zhù)你可以不需要額外實(shí)現模型解碼器或者Python解釋器就可以在多種服務(wù)器和移動(dòng)設備上部署訓練好的模型。
TensorFlow Serving通過(guò)保持相同的服務(wù)器架構和API,可以方便地配置新算法和環(huán)境。TensorFlow Serving 還提供開(kāi)箱即用的模型,并且可以輕松擴展以支持其他的模型和數據。
TensorFlow編程接口包括Python和C++,Java,Go,R和Haskell語(yǔ)言的接口也在alpha版中支持。另外,TensorFlow還支持谷歌和亞馬遜的云環(huán)境。
TensorFlow提供細致的網(wǎng)絡(luò )層使用戶(hù)可以構建新的復雜的層結構而不需要自己從底層實(shí)現它們。子圖允許用戶(hù)查看和恢復圖的任意邊的數據。這對復雜計算的Debug非常有用。
分布式TensorFlow在0.8版本推出,提供了并行計算支持,可以讓模型的不同 部分在不同設備上并行訓練。
TensorFlow在斯坦福大學(xué),伯克利學(xué)院,多倫多大學(xué)和Udacity(2016年3月成立的在線(xiàn)學(xué)校)均有教學(xué)。
TensorFlow的缺點(diǎn)有:
每個(gè)計算流必須構建成圖,沒(méi)有符號循環(huán),這樣使得一些計算變得困難;
沒(méi)有三維卷積,因此無(wú)法做視頻識別;
即便已經(jīng)比原有版本(0.5)快了58倍,但執行性能仍然不及它的競爭者。
Caffe的高速使得它非常適合于科研和商業(yè)領(lǐng)域。利用一個(gè)NVIDIA K40 GPU,Caffe可以每天處理60M張圖片,即推斷1毫秒一張,訓練4毫秒一張。使用最新的版本,甚至可以更快。
Caffe是賈揚清的作品,目前,賈揚清是Facebook AI平臺的Lead。始于2013年末,Caffe可能是第一個(gè)主流的工業(yè)級的深度學(xué)習工具包。Caffe具有卓越的卷積模型,是計算機視覺(jué)領(lǐng)域最受歡迎的工具之一,且2014年ImageNet 大賽的獲獎作品使用的就是Caffe框架。Caffe遵循BSD 2-Clasuse 協(xié)議。在此我向大家推薦一個(gè)大數據技術(shù)交流圈: 658558542 突破技術(shù)瓶頸,提升思維能力 。
Caffe底層是用C++實(shí)現的,可以在各種設備上編譯。Caffe是跨平臺的并且提供Windows接口,它提供C++,Python和Matlab語(yǔ)言接口。Caffe擁有著(zhù)龐大的用戶(hù)社區,并且有大量深度網(wǎng)絡(luò )模型在社區上貢獻,被稱(chēng)為“Model Zoo”。其中,AlexNet和GoogleNet是最著(zhù)名的兩個(gè)。
Caffe是視覺(jué)識別的流行框架,然而Caffe不提供像TensorFlow,CNTK或Theano一樣細粒度的層結構。你必須編寫(xiě)底層代碼來(lái)構建復雜的層結構。由于它的固有架構,Caffe對循環(huán)網(wǎng)絡(luò )和語(yǔ)言模型的支持不力。
Caffe的模型可以通過(guò)腳本輕松轉化成Caffe2模型。Caffe在設計上的傾向使得它特別適合視覺(jué)相關(guān)的問(wèn)題,Caffe2沿襲了它對視覺(jué)問(wèn)題的強大支持,同時(shí)還加入了RNN和LSTM以更好地支持自然語(yǔ)言處理,手寫(xiě)字識別和時(shí)間序列預測。
賈揚清和他的團隊目前在Facebook致力于Caffe2的研發(fā)。2017年4月18號,Facebook基于BSD協(xié)議開(kāi)源了Caffe2。Caffe2聚焦于模塊化,在移動(dòng)設備和大規模部署均表現出色。和TensorFlow一樣,Caffe2頁(yè)使用C++ Eigen以支持ARM架構。
可以預見(jiàn)在不遠的將來(lái)Caffe2將會(huì )替代Caffe在深度學(xué)習社區的地位。
Microsoft Cognitive Toolkit
和Caffe一樣,CNTK底層也是C++實(shí)現并具有跨平臺CPU/GPU支持。搭載在A(yíng)zure GPU Lab上,CNTK能發(fā)揮出最高的分布式計算性能。目前,CNTK由于不支持ARM架構,限制了其在移動(dòng)端的應用。
Microsoft Cognitive Toolkit(CNTK)設計的初衷是用于語(yǔ)音識別領(lǐng)域。CNTK支持RNN(循環(huán)神經(jīng)網(wǎng)絡(luò ))和CNN(卷積神經(jīng)網(wǎng)絡(luò )),因此他有能力勝任圖像、手寫(xiě)字和語(yǔ)音識別問(wèn)題。CNTK支持64位Linux和Windows系統,提供Python和C++語(yǔ)言接口,遵循MIT協(xié)議。
CNTK與TensorFlow和Theano有著(zhù)類(lèi)似的設計理念——把網(wǎng)絡(luò )定義成向量操作的語(yǔ)義圖,向量操作例如矩陣加法、矩陣乘法以及卷積。同時(shí),CNTK也提供細粒度的網(wǎng)絡(luò )層設計,允許用戶(hù)使用它們設計新的復雜網(wǎng)絡(luò )。
MXNet
MXNet源自于卡內基梅隆大學(xué)和華盛頓大學(xué)。MXNet是一個(gè)極具特色,可編程,可擴展的深度學(xué)習框架。MXNet可以混合多種語(yǔ)言的模型和代碼,包括Python, C++, R, Scala, Julia, Matlab, JavaScript。2017年1月30號,MXNet被納為Apache基金會(huì )孵化項目。
MXNet支持CNN、RNN、LSTM, 提供對圖像,手寫(xiě)字,語(yǔ)音識別,預測和自然語(yǔ)言問(wèn)題的強大支持。有人認為,MXNet是世界上最好的圖像分類(lèi)器。
MXNet的一個(gè)獨特之處是它是少有的幾個(gè)支持對抗生成網(wǎng)絡(luò )(GAN)的框架之一。這個(gè)模型被用于實(shí)驗經(jīng)濟學(xué)方法中的“納什均衡”。
MXNet具有出色的可擴展性,例如GPU并行計算,存儲映像,高速開(kāi)發(fā)和可移植性。另外,MXNet可以和Apache hadoop YARN結合,YARN是一個(gè)通用分布式應用管理框架,這一特性使得MXNet成為T(mén)ensorFlow的競爭者。
另一個(gè)特殊之處是,亞馬遜的CTO Werner Vogels宣布了對MXNet的支持:“今天,我們宣布MXNet將成為亞馬遜的深度學(xué)習框架選擇。我們將在現有和未來(lái)將出現的服務(wù)中使用MXNet。”蘋(píng)果公司的部分傳聞也表示該公司將會(huì )使用MXNet作為其深度學(xué)習框架。
Torch
Torch由Facebook的Royan Collobert、Soumith Chintala、曾任于Twitter現任于Nvidia的Clement Farabet和Google Deep Mind 的Koray Kavukcuoglu共同開(kāi)發(fā)。其主要貢獻者是Facebook、Twitter和Nvidia。 Torch遵守BSD 3 clause 開(kāi)源協(xié)議。然而,Facebook近期宣布將轉向Caffe2作為其首選深度學(xué)習框架因為它支持移動(dòng)設備開(kāi)發(fā)。
Torch由Lua語(yǔ)言實(shí)現,Lua是一種小眾語(yǔ)言,因此若你不熟悉這門(mén)語(yǔ)言,會(huì )影響到整個(gè)工作的效率。
Torch缺少像TensorFlow、MXNet on YARN和Deeplearning4J那樣的的分布式支持,缺少多種語(yǔ)言接口同樣限制了它的受眾。
DeepLearning4J
DL4J擁有內建的GPU支持,這一重要特性能夠支持YARN上的訓練過(guò)程。DL4J擁有豐富的深度神經(jīng)網(wǎng)絡(luò )架構支持,包括RBM,DBN,CNN,RNN,RNTN和LSTM。DL4J還支持一個(gè)向量計算庫——Canova。
DeepLearning4J(DL4J)是基于A(yíng)pache 2.0協(xié)議的分布式開(kāi)源神經(jīng)網(wǎng)絡(luò )類(lèi)庫,它由Java和Scala實(shí)現。DL4J是SkyMind的Adam Gibson開(kāi)發(fā)的,它是唯一的商品級深度學(xué)習網(wǎng)絡(luò ),可以和Hadoop、Spark結合構建多用戶(hù)多線(xiàn)程服務(wù)。DL4J是唯一使用Map-Reduce訓練網(wǎng)絡(luò )而使用其他類(lèi)庫進(jìn)行大規模矩陣操作的框架。在此我向大家推薦一個(gè)大數據技術(shù)交流圈: 658558542 突破技術(shù)瓶頸,提升思維能力 。
由于是由Java實(shí)現,DL4J先天比Python塊,它使用多GPU執行圖像識別任務(wù)和Caffe一樣快。該框架可以出色完成圖像識別,欺詐檢測和自然語(yǔ)言處理任務(wù)。
Theano
Theano主要由蒙特利爾大學(xué)學(xué)習算法研究所(MILA)創(chuàng )立。Yoshua Bengio是Theano的開(kāi)創(chuàng )者,同時(shí)領(lǐng)導這個(gè)實(shí)驗室,該實(shí)驗室在深度學(xué)習研究領(lǐng)域做出巨大的貢獻,培養出約100名相關(guān)學(xué)生和從業(yè)者。Theano支持高效機器學(xué)習算法的快速開(kāi)發(fā),遵守BSD開(kāi)源協(xié)議。
Theano提供多種支持手寫(xiě)字識別、圖像分類(lèi)(包括醫學(xué)圖像)的卷積模型。Theano還提供三維卷積和池化用于視頻分類(lèi)。在語(yǔ)言方面,Theano能勝任例如理解、翻譯和生成等自然語(yǔ)言處理任務(wù)。Theano還支持生成對抗網(wǎng)絡(luò )(GAN),GAN即是由MILA的一位學(xué)生提出的。
Theano不像TensorFlow那樣優(yōu)雅,但它提供了支持循環(huán)控制(被稱(chēng)為scan)的API,可以輕松實(shí)現RNN。
Theano支持多GPU并行計算并且自帶分布式框架。Theano只支持一種開(kāi)發(fā)語(yǔ)言,比TensorFlow速度快很多,是一種學(xué)術(shù)研究的有力工具。然而,其不支持移動(dòng)平臺以及沒(méi)有多種語(yǔ)言接口的缺陷限制了它在企業(yè)的廣泛應用。
地址:重慶市渝中區上清寺鑫隆達B座28-8
郵編:400015
電話(huà):023-63612462
EMAIL:cnjl_net@163.com