DL4J中文文檔/開始/快速入門

開始

這是運行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ò)

先決條件

你應該安裝這些來使用這個快速入門指南。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例子

  1. 使用命令行輸入以下內(nèi)容:
$ git clone https://github.com/deeplearning4j/dl4j-examples.git
$ cd dl4j-examples/
$ mvn clean install

  1. 打開IntelliJ并選擇Import Project。然后選擇dl4j-examples主要的目錄(注意:以下的示例中闡述的是一個過期的倉庫名為dl4j-0.4-examples。盡管如此,你將要下載和安裝的倉庫為 dl4j-examples)。
select directory
  1. 選擇 ‘Import project from external model’ 并確保Maven被選擇

  2. import project
  3. 通過向?qū)нx項繼續(xù)。選擇以jdk開頭的SDK。(你也許需要點擊一個加號來查看你的選項)然后點擊 finish。等待IntelliJ下載完所有的依賴。你將看到右下角水平的進度條。

  4. 在左邊文件樹中選擇一個例子 ,右擊文件來運行

  5. 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ò)模型變得有多精確:

mlp classifier results

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

mlp classifier viz

恭喜,你已用DL4J訓練了你的第一個神經(jīng)網(wǎng)絡(luò)。

接下來的步驟

  1. 在Gitter上加入我們。我們有三個大的社區(qū)渠道。
    • DL4J Live Chat 是有關(guān)DL4J問題的主要渠道。大多數(shù)人出現(xiàn)在這兒。
    • Tuning Help 是提供給剛開始學習神經(jīng)網(wǎng)絡(luò)的人。初學者從這訪問我們。
    • Early Adopters 是提供給檢查和改進版本的人。警告:這個是提供給更多經(jīng)驗的愛好者。
  2. 閱讀 神經(jīng)網(wǎng)絡(luò)介紹.
  3. 查看更詳細的 全面設(shè)置指南.
  4. 瀏覽 DL4J 文檔 .
  5. Python 愛好者 : 如果您計劃在Deeplearning4j上運行基準測試,并將其與著名的Python框架[x]進行比較,請閱讀這些關(guān)于如何在JVM上優(yōu)化堆空間、垃圾收集以及ETL的說明。通過參照它們,你會看到至少10倍的加速訓練時間。

其它鏈接

故障排查

問: 我在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.

使用模版:

  1. 克隆到你的本地機器 git clone https://github.com/deeplearning4j/dl4j-quickstart.git
  2. 導入 dl4j-quickstart 主文件夾到 IntelliJ.
  3. 開始編碼!

Eclipse Deeplearning4j 的更多信息

Deeplearning4j是一個可以讓你從一開始就可以選擇一切的框架。我們不是Tensorflow(一個具有自動微分的低級數(shù)值計算庫)或是Pytorch。

Deeplearning4j有幾個子項目,使其易于構(gòu)建端到端應用程序。

如果你想將模型部署到生產(chǎn)中,你可能會喜歡我們的從Keras導入的模型。

Deeplearning4j有幾個子模塊。這些范圍從可視化UI到spark分布式訓練。對于這些模塊的概述,請查看Github上的Deeplearning4j示例。

如果你想要一個簡單的桌面應用作為開始,你需要兩件個東西:一個 nd4j backenddeeplearning4j-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)系微信

image

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

image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容