其實也沒有特別多,。主流的通用神經(jīng)網(wǎng)絡(luò)框架就TensorFlow,、Keras、PyTorch,、MXNet,、Caffe2這5個。 TensorFlow(Keras)在業(yè)界使用最廣泛的是TensorFlow,,而且TensorFlow支持更多硬件,,包括Google自家強力的TPU。 然后,,Keras和TensorFlow其實可以算1個,。 Keras主要是提供了一個高層抽象的API,使得搭建神經(jīng)網(wǎng)絡(luò)更迅速快捷,。而`tf.contrib.keras`已經(jīng)集成了這一點,,也就是說,使用TensorFlow,,你一樣可以用Keras風格的API,,而無需使用獨立的Keras框架。而且使用`tf.contrib.keras`還有一個額外的好處,,就是當你發(fā)現(xiàn)Keras API不夠用,,需要對自己的模型進行特別定制的時候,可以馬上轉(zhuǎn)用TensorFlow. 當然,,理論上,,Keras除了TensorFlow之外,還可以用Theano作為底層,。但是現(xiàn)在Theano已經(jīng)停止維護了,。 PyTorchPyTorch的優(yōu)勢是支持動態(tài)圖模型,也就是所謂的define-by-run,。 (圖片來源:PyTorch官網(wǎng)) 當然,TensorFlow也有eager executation,不過用了eager executation以后限制多多,,很多TensorFlow Graph的東西都不能用,。最近剛開源了Swift For TensorFlow,基于語法分析和代碼生成,,在保證性能的前提下,,支持動態(tài)模型。不過這個項目仍處于早期階段,。目前還不成熟,。 所以,目前階段,,如果你非常需要動態(tài)圖模型,,PyTorch是當前最成熟的define-by-run框架,。 Caffe2同樣不支持動態(tài)圖模型。這個輕量級的模型更多地用于部署,,也就是用其他模型訓練,,然后在運用階段通過Caffe2部署,以節(jié)省資源,,特別是在移動端這樣的受限環(huán)境,。 MXNet新版的MXNet也支持define-by-run了。不過這個框架相對而言,,用的人最少,。 注意,前面提到的幾個框架背后都是業(yè)界巨頭,,TensorFlow背后是Google,,PyTorch、Caff2背后是Facebook,。而MXNet雖然是由Microsoft和Amazon合作支持的,,但是已經(jīng)捐給Apache基金會了。如果對這方面有特別需求(不希望受制于某家大公司),,那么MXNet算是最“開放”的,。 |
|
來自: 昵稱11935121 > 《未命名》