開始
這是運行DL4J示例所需的一切,并開始自己的項目。
我們建議你加入我們的 Gitter Live Chat。Gitter是你可以請求幫助和提供反饋的地方,但是在問下面我們已經(jīng)回答的問題之前,請務(wù)必使用這個指南。如果你是深度學習的新手,我們已經(jīng)為初學者提供了路線圖,鏈接到課程、閱讀和其他資源。
代碼嘗試
DL4J是一種特定領(lǐng)域的語言,用于配置由多層構(gòu)成的深度神經(jīng)網(wǎng)絡(luò)。一切都從MultiLayerConfiguration開始,這些MultiLayerConfiguration組織這些層和它們的超參數(shù)。
超參數(shù)是決定神經(jīng)網(wǎng)絡(luò)如何學習的變量。它們包括更新模型權(quán)重的次數(shù)、如何初始化這些權(quán)重、將哪個激活函數(shù)附加到節(jié)點、使用哪個優(yōu)化算法以及模型應該學習多快。這就是一個配置的樣子:
MultiLayerConfiguration conf = new NeuralNetConfiguration.Builder()
.weightInit(WeightInit.XAVIER)
.activation("relu")
.optimizationAlgo(OptimizationAlgorithm.STOCHASTIC_GRADIENT_DESCENT)
.updater(new Sgd(0.05))
// ... other hyperparameters
.list()
.backprop(true)
.build();
使用Deeplearning4j,可以通過調(diào)用NeuralNetConfiguration.Builder()上的layer方法來添加層,按照層的順序(下面的零索引層是輸入層)指定其位置、輸入和輸出節(jié)點的數(shù)量是nIn和nOut以及類型為:DenseLayer。
.layer(0, new DenseLayer.Builder().nIn(784).nOut(250)
.build())
一旦你已經(jīng)配置好你的網(wǎng)絡(luò),你可以用 model.fit來訓練你的網(wǎng)絡(luò)
先決條件
- Java (developer version) 1.7 或更高版本 (僅支持64位版本)
- Apache Maven (自動化構(gòu)建和依賴管理器)
- IntelliJ IDEA 或 Eclipse
- Git
你應該安裝這些來使用這個快速入門指南。DL4J針對熟悉生產(chǎn)部署、IDE和自動化構(gòu)建工具的專業(yè)Java開發(fā)人員。如果你已經(jīng)有了這些經(jīng)驗,使用DL4J將是最簡單的。如果您是Java新手或不熟悉這些工具,請閱讀下面的詳細信息以幫助安裝和設(shè)置。否則,跳到DL4J示例。
Java
如果你沒有Java 1.7 或更高版版的Java,下載當前最新的Java Development Kit (JDK) 。用以下的命令來檢查你是否有安裝可兼容的Java版本。
java -version
確保你有一個64位版本的JAVA已被安裝,如果你決定用32位版本來嘗試,你會看到一個錯誤告訴你no jnind4j in java.library.path
確保JAVA_HOME 環(huán)境變量已被設(shè)置。
Apache Maven
Maven是Java項目的依賴管理和自動構(gòu)建工具。它很好地與IDELJ等IDE一起工作,并允許你輕松安裝DL4J項目庫。按照他們的說明為您的系統(tǒng)安裝或更新Maven最新版本。若要檢查是否安裝了最新版本的Maven,請輸入以下內(nèi)容:
mvn --version
如果你在Mac上工作,你可以簡單的輸入如下的命令行:
brew install maven
Maven在Java開發(fā)人員中被廣泛使用,它與DL4J一起工作是非常必要的。如果你來自不同的背景,Maven對你來說是新的,請檢查Apache的Maven概覽和我們對非Java程序員的Maven的介紹,其中包括一些額外的疑難解答。其他構(gòu)建工具,如常ivy和Dradle也可以工作,但我們對Maven支持最好。
IntelliJ IDEA
集成開發(fā)環(huán)境(IDE)允許你使用我們的API并在幾個步驟中配置神經(jīng)網(wǎng)絡(luò)。我們強烈建議使用IntelliJ,它與Maven通信來處理依賴關(guān)系。IntelliJ社區(qū)版是免費的。
還有其他流行的IDE,如Eclipse和NETBeans。但是,IntelliJ是首選,如果需要的話,使用它會讓你在Gitter Live Chat 上更容易找到幫助。
Git
安裝Git的最新版本。如果你已經(jīng)擁有Git,你可以使用Git本身更新到最新版本:
$ git clone git://git.kernel.org/pub/scm/git/git.git
幾個簡單步驟中的DL4J例子
- 使用命令行輸入以下內(nèi)容:
$ git clone https://github.com/deeplearning4j/dl4j-examples.git
$ cd dl4j-examples/
$ mvn clean install
- 打開IntelliJ并選擇Import Project。然后選擇dl4j-examples主要的目錄(注意:以下的示例中闡述的是一個過期的倉庫名為dl4j-0.4-examples。盡管如此,你將要下載和安裝的倉庫為 dl4j-examples)。

選擇 ‘Import project from external model’ 并確保Maven被選擇
- import project
通過向?qū)нx項繼續(xù)。選擇以jdk開頭的SDK。(你也許需要點擊一個加號來查看你的選項)然后點擊 finish。等待IntelliJ下載完所有的依賴。你將看到右下角水平的進度條。
在左邊文件樹中選擇一個例子 ,右擊文件來運行
- run IntelliJ example
在你的工程中使用DL4J:配置POM.xml文件
為了在你自己的工程中運行DL4J,我們強烈推薦使用Maven用于Java用戶,或者為scala使用SBT工具?;镜囊蕾嚰捌浒姹救缦滤尽_@包括:
-
deeplearning4j-core, 包括神經(jīng)網(wǎng)絡(luò)的實現(xiàn) -
nd4j-native-platform, CPU版本的ND4J庫為DL4J提供支持 -
datavec-api- Datavec是我們用于向量化和加載數(shù)據(jù)的庫
每個Maven工程都有一個POM文件。這里是運行示例時應該出現(xiàn)的POM文件。
在IntelliJ內(nèi)部,你需要選擇你要運行的第一個深度學習4J示例。我們建議MLPClassifierLinear,因為你幾乎會立即看到網(wǎng)絡(luò)將兩組數(shù)據(jù)分類在我們的UI中。GITHUB上的文件可以在這里找到。
若要運行該示例,請右鍵單擊它并選擇下拉菜單中的綠色按鈕。你會看到,在IntelliJ的底部窗口,一系列的分數(shù)。最右邊的數(shù)字是網(wǎng)絡(luò)分類的錯誤分數(shù)。如果你的網(wǎng)絡(luò)正在學習,那么隨著它處理的每個批次,這個數(shù)字會隨著時間的推移而減少。最后,這個窗口會告訴你你的神經(jīng)網(wǎng)絡(luò)模型變得有多精確:

在另一個窗口中,將出現(xiàn)一個圖表,顯示多層感知器(MLP)如何對示例中的數(shù)據(jù)進行分類。它看起來像這樣:

恭喜,你已用DL4J訓練了你的第一個神經(jīng)網(wǎng)絡(luò)。
接下來的步驟
- 在Gitter上加入我們。我們有三個大的社區(qū)渠道。
- DL4J Live Chat 是有關(guān)DL4J問題的主要渠道。大多數(shù)人出現(xiàn)在這兒。
- Tuning Help 是提供給剛開始學習神經(jīng)網(wǎng)絡(luò)的人。初學者從這訪問我們。
- Early Adopters 是提供給檢查和改進版本的人。警告:這個是提供給更多經(jīng)驗的愛好者。
- 閱讀 神經(jīng)網(wǎng)絡(luò)介紹.
- 查看更詳細的 全面設(shè)置指南.
- 瀏覽 DL4J 文檔 .
- Python 愛好者 : 如果您計劃在Deeplearning4j上運行基準測試,并將其與著名的Python框架[x]進行比較,請閱讀這些關(guān)于如何在JVM上優(yōu)化堆空間、垃圾收集以及ETL的說明。通過參照它們,你會看到至少10倍的加速訓練時間。
其它鏈接
- Deeplearning4j artifacts on Maven Central
- ND4J artifacts on Maven Central
- Datavec artifacts on Maven Central
- Scala code for UCI notebook
故障排查
問: 我在Windows上使用64位的JAVA仍然得到 no jnind4j in java.library.path 錯誤
答: 你可能有不兼容的 DLLs 在你的 PATH中. 為了讓 DL4J忽略這些, 你必須添加如下作為 VM 參數(shù) (Run -> Edit Configurations -> VM Options in IntelliJ):
-Djava.library.path=""
問: 我正在運行示例,并且基于Spark的示例存在問題,例如分布式培訓或datavec轉(zhuǎn)換選項。
答: 你可能丟失了Spark要求的一些依賴。查看這個Stack Overflow discussion來獲得一個一個潛在的依賴問題討論。windows用戶可能需要來自Hadoop的winutils.exe。 從https://github.com/steveloughran/winutils and put it into the null/bin/winutils.exe下載winutils.exe (或創(chuàng)建一個hadoop文件夾并添加它到HADOOP_HOME)。
故障排查: 在Windows上調(diào)試UnsatisfiedLinkError
Windows用戶可能看到如下信息:
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.deeplearning4j.nn.conf.NeuralNetConfiguration$Builder.seed(NeuralNetConfiguration.java:624)
at org.deeplearning4j.examples.feedforward.anomalydetection.MNISTAnomalyExample.main(MNISTAnomalyExample.java:46)
Caused by: java.lang.RuntimeException: org.nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException: Please ensure that you have an nd4j backend on your classpath. Please see: http://nd4j.org/getstarted.html
at org.nd4j.linalg.factory.Nd4j.initContext(Nd4j.java:5556)
at org.nd4j.linalg.factory.Nd4j.(Nd4j.java:189)
... 2 more
Caused by: org.nd4j.linalg.factory.Nd4jBackend$NoAvailableBackendException: Please ensure that you have an nd4j backend on your classpath. Please see: http://nd4j.org/getstarted.html
at org.nd4j.linalg.factory.Nd4jBackend.load(Nd4jBackend.java:259)
at org.nd4j.linalg.factory.Nd4j.initContext(Nd4j.java:5553)
... 3 more
如果是這個問題,請參閱本頁。在這種情況下,替換為“ND4JCPU”。
Eclipse 不使用 Maven的設(shè)置
我們推薦使用Maven 和 Intellij。如果你更喜歡Eclipse并不喜歡Maven 這里有一篇很好的博客讓你過度到Eclipse配置
快速入門模版
現(xiàn)在,您已經(jīng)了解了如何運行不同的示例,我們已經(jīng)為你提供了一個模板,該模版具有一個基本的EMNIST訓練器,具有早停和評估代碼。
快速入門模版在此https://github.com/deeplearning4j/dl4j-quickstart.
使用模版:
- 克隆到你的本地機器
git clone https://github.com/deeplearning4j/dl4j-quickstart.git - 導入
dl4j-quickstart主文件夾到 IntelliJ. - 開始編碼!
Eclipse Deeplearning4j 的更多信息
Deeplearning4j是一個可以讓你從一開始就可以選擇一切的框架。我們不是Tensorflow(一個具有自動微分的低級數(shù)值計算庫)或是Pytorch。
Deeplearning4j有幾個子項目,使其易于構(gòu)建端到端應用程序。
如果你想將模型部署到生產(chǎn)中,你可能會喜歡我們的從Keras導入的模型。
Deeplearning4j有幾個子模塊。這些范圍從可視化UI到spark分布式訓練。對于這些模塊的概述,請查看Github上的Deeplearning4j示例。
如果你想要一個簡單的桌面應用作為開始,你需要兩件個東西:一個 nd4j backend 和 deeplearning4j-core。更多代碼請查看 simpler examples submodule.
如果你想要一個靈活的深度學習API,這有兩種方式。你可以單獨使用nd4j,查看我們的 nd4j 示例 或 計算圖API.
如果你想要在 Spark進行分布式訓練,你可以查看我們的 Spark page記住我們不會為你設(shè)置spark
如果你想要設(shè)置spark和GPU,這在很大程度上取決于你。Deeplearning4j簡單的作為一個jar文件部署在一個存在的Spark集群上。
如果你想要Spark和GPU一起工作,我們推薦你看Spark with Mesos。
如果你想在移動端部署,你可以看我們的Android page。
我們?yōu)楦鞣N硬件架構(gòu)部署優(yōu)化后的代碼。我們使用基于C++的循環(huán),就像其他人一樣。請查看C++ framework libnd4j。
Deeplearning4j有其它兩個值得注意的組件:
Deeplearning4j是構(gòu)建真實應用程序的端到端平臺,而不僅僅是具有自動微分的張量庫。如果你想要一個帶有autodiff的張量庫,請參閱ND4J和samediff。samediff仍然在測試,但是如果你想做出貢獻,請加入我們的live chat on Gitter。
最后,如果你正在測試DL4J,請考慮進入我們的在線聊天并獲取提示。DL4J有所有的模塊但可能不像Python框架那樣工作。你必須為一些應用從源碼來構(gòu)建DL4J
翻譯:風一樣的男子
有任何問題請聯(lián)系微信

如果您覺得我的文章給了您幫助,請為我買一杯飲料吧!以下是我的支付寶,意思一下我將非常感激!


