DL4J實(shí)戰(zhàn)之一:準(zhǔn)備

歡迎訪問我的GitHub

https://github.com/zq2599/blog_demos

內(nèi)容:所有原創(chuàng)文章分類匯總及配套源碼,涉及Java、Docker、Kubernetes、DevOPS等;

關(guān)于DL4J

  • DL4J是Deeplearning4j的簡稱,是基于Java虛擬機(jī)的深度學(xué)習(xí)框架,是用java和scala開發(fā)的,已開源,官網(wǎng):https://deeplearning4j.org/

關(guān)于《DL4J實(shí)戰(zhàn)》系列

  • 《DL4J實(shí)戰(zhàn)》是欣宸在深度學(xué)習(xí)領(lǐng)域的原創(chuàng),旨在通過一系列動手操作,由淺入深了解深度學(xué)習(xí)的基本知識,掌握通用操作,并且對DL4J逐漸熟練,進(jìn)而在學(xué)習(xí)和工作中解決實(shí)際問題

本篇概覽

  • 作為《DL4J實(shí)戰(zhàn)》系列的開篇,本文為后面的文章和實(shí)戰(zhàn)做好準(zhǔn)備工作,包含以下內(nèi)容:
  1. 確定環(huán)境和版本信息
  2. 創(chuàng)建名為<font color="blue">dl4j-tutorials</font>的maven工程作為父工程,后面整個(gè)系列的代碼都是dl4j-tutorial的子工程
  3. 創(chuàng)建名為<font color="blue">commons</font>的子工程,這里面是一些常用的工具代碼,例如下載數(shù)據(jù)集、繪圖等

源碼下載

名稱 鏈接 備注
項(xiàng)目主頁 https://github.com/zq2599/blog_demos 該項(xiàng)目在GitHub上的主頁
git倉庫地址(https) https://github.com/zq2599/blog_demos.git 該項(xiàng)目源碼的倉庫地址,https協(xié)議
git倉庫地址(ssh) git@github.com:zq2599/blog_demos.git 該項(xiàng)目源碼的倉庫地址,ssh協(xié)議
  • 這個(gè)git項(xiàng)目中有多個(gè)文件夾,《DL4J實(shí)戰(zhàn)》系列的源碼在<font color="blue">dl4j-tutorials</font>文件夾下,如下圖紅框所示:
在這里插入圖片描述

版本信息

本系列實(shí)戰(zhàn)都是在以下環(huán)境進(jìn)行,這里列出來供您參考:

  1. 操作系統(tǒng):win10 64位專業(yè)版
  2. JDK:1.8.0_281
  3. maven:3.6.2
  4. IEDA:2021.1.1 (Ultimate Edition)
  5. DL4J:1.0.0-beta7

《DL4J實(shí)戰(zhàn)》系列源碼的公用父工程

  • 《DL4J實(shí)戰(zhàn)》系列的源碼都放置在同一個(gè)父工程下,除了管理代碼方便,還可以將各個(gè)子工程的依賴庫版本統(tǒng)一管理,接下來創(chuàng)建這個(gè)父工程;

  • 新建名為<font color="blue">dl4j-tutorials</font>的maven工程,該工程下只有pom.xml,內(nèi)容如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.bolingcavalry</groupId>
    <artifactId>dlfj-tutorials</artifactId>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>commons</module>
        <module>classifier-iris</module>
    </modules>
    <packaging>pom</packaging>

    <properties>
        <java.version>1.8</java.version>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>

        <dl4j-master.version>1.0.0-beta7</dl4j-master.version>
        <!-- Change the nd4j.backend property to nd4j-cuda-X-platform to use CUDA GPUs -->
        <!-- <nd4j.backend>nd4j-cuda-10.2-platform</nd4j.backend> -->
        <nd4j.backend>nd4j-native</nd4j.backend>
        <java.version>1.8</java.version>
        <maven-compiler-plugin.version>3.6.1</maven-compiler-plugin.version>
        <maven.minimum.version>3.3.1</maven.minimum.version>
        <exec-maven-plugin.version>1.4.0</exec-maven-plugin.version>
        <maven-shade-plugin.version>2.4.3</maven-shade-plugin.version>
        <jcommon.version>1.0.23</jcommon.version>
        <jfreechart.version>1.0.13</jfreechart.version>
        <logback.version>1.1.7</logback.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.freemarker</groupId>
                <artifactId>freemarker</artifactId>
                <version>2.3.29</version>
            </dependency>
            <dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-common</artifactId>
                <version>4.1.48.Final</version>
            </dependency>
            <dependency>
                <groupId>org.nd4j</groupId>
                <artifactId>${nd4j.backend}</artifactId>
                <version>${dl4j-master.version}</version>
            </dependency>
            <dependency>
                <groupId>org.datavec</groupId>
                <artifactId>datavec-api</artifactId>
                <version>${dl4j-master.version}</version>
            </dependency>
            <dependency>
                <groupId>org.datavec</groupId>
                <artifactId>datavec-data-image</artifactId>
                <version>${dl4j-master.version}</version>
            </dependency>
            <dependency>
                <groupId>org.datavec</groupId>
                <artifactId>datavec-local</artifactId>
                <version>${dl4j-master.version}</version>
            </dependency>
            <dependency>
                <groupId>org.deeplearning4j</groupId>
                <artifactId>deeplearning4j-datasets</artifactId>
                <version>${dl4j-master.version}</version>
            </dependency>
            <dependency>
                <groupId>org.deeplearning4j</groupId>
                <artifactId>deeplearning4j-core</artifactId>
                <version>${dl4j-master.version}</version>
            </dependency>
            <dependency>
                <groupId>org.deeplearning4j</groupId>
                <artifactId>deeplearning4j-ui</artifactId>
                <version>${dl4j-master.version}</version>
            </dependency>
            <dependency>
                <groupId>org.deeplearning4j</groupId>
                <artifactId>deeplearning4j-zoo</artifactId>
                <version>${dl4j-master.version}</version>
            </dependency>
            <!-- ParallelWrapper & ParallelInference live here -->
            <dependency>
                <groupId>org.deeplearning4j</groupId>
                <artifactId>deeplearning4j-parallel-wrapper</artifactId>
                <version>${dl4j-master.version}</version>
            </dependency>
            <!-- Used in the feedforward/classification/MLP* and feedforward/regression/RegressionMathFunctions example -->
            <dependency>
                <groupId>jfree</groupId>
                <artifactId>jfreechart</artifactId>
                <version>${jfreechart.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jfree</groupId>
                <artifactId>jcommon</artifactId>
                <version>${jcommon.version}</version>
            </dependency>
            <!-- Used for downloading data in some of the examples -->
            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>4.3.5</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
                <version>${logback.version}</version>
            </dependency>
            <dependency>
                <groupId>org.datavec</groupId>
                <artifactId>datavec-data-codec</artifactId>
                <version>${dl4j-master.version}</version>
            </dependency>
            <dependency>
                <groupId>org.bytedeco</groupId>
                <artifactId>javacv-platform</artifactId>
                <version>1.5.2</version>
            </dependency>

            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.16.16</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

子工程commons

  • 后面的實(shí)戰(zhàn)中,我們常用到下載文件、繪圖等功能,因此新增一個(gè)子工程,將下載繪圖等功能對應(yīng)的工具類都在這里面給其他工程使用

  • 在<font color="blue">dl4j-tutorials</font>下新增名為<font color="blue">commons</font>的子工程,其pom.xml內(nèi)容如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>dlfj-tutorials</artifactId>
        <groupId>com.bolingcavalry</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>commons</artifactId>
    <dependencies>
        <dependency>
            <groupId>org.datavec</groupId>
            <artifactId>datavec-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>
        <dependency>
            <groupId>org.deeplearning4j</groupId>
            <artifactId>deeplearning4j-core</artifactId>
        </dependency>
        <dependency>
            <groupId>jfree</groupId>
            <artifactId>jfreechart</artifactId>
        </dependency>
    </dependencies>
</project>
  • 目前commons子工程中有四個(gè)類,并非欣宸原創(chuàng),而是來自DL4J的官方demo,其功能簡介如下:
  1. DataUtilities:下載和解壓指定地址對應(yīng)的文件
  2. DownloaderUtility:DL4J為我們準(zhǔn)備了豐富的數(shù)據(jù)集(例如150個(gè)鳶尾花數(shù)據(jù),帶標(biāo)簽),這些內(nèi)容保存在云端(AZURE),通過DownloaderUtility可以很方便的下載和解壓這些數(shù)據(jù)集
  3. PlotUtil:繪制二維圖形
  4. VAEPlotUtil:繪制變分自編碼圖形
  • 上述四個(gè)類在工程中的位置如下圖所示,限于篇幅就不貼出代碼了,有需要的話請?jiān)趃ithub上獲?。?/li>
在這里插入圖片描述
  • 至此,準(zhǔn)備工作就完成了,接下來的旅程會異常精彩,欣宸感謝您的一路相伴!

你不孤單,欣宸原創(chuàng)一路相伴

  1. Java系列
  2. Spring系列
  3. Docker系列
  4. kubernetes系列
  5. 數(shù)據(jù)庫+中間件系列
  6. DevOps系列

歡迎關(guān)注公眾號:程序員欣宸

微信搜索「程序員欣宸」,我是欣宸,期待與您一同暢游Java世界...
https://github.com/zq2599/blog_demos

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

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

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