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