歡迎訪問我的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)容:
- 確定環(huán)境和版本信息
- 創(chuàng)建名為<font color="blue">dl4j-tutorials</font>的maven工程作為父工程,后面整個(gè)系列的代碼都是dl4j-tutorial的子工程
- 創(chuàng)建名為<font color="blue">commons</font>的子工程,這里面是一些常用的工具代碼,例如下載數(shù)據(jù)集、繪圖等
源碼下載
- 本篇實(shí)戰(zhàn)中的完整源碼可在GitHub下載到,地址和鏈接信息如下表所示(https://github.com/zq2599/blog_demos):
| 名稱 | 鏈接 | 備注 |
|---|---|---|
| 項(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)行,這里列出來供您參考:
- 操作系統(tǒng):win10 64位專業(yè)版
- JDK:1.8.0_281
- maven:3.6.2
- IEDA:2021.1.1 (Ultimate Edition)
- 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,其功能簡介如下:
- DataUtilities:下載和解壓指定地址對應(yīng)的文件
- DownloaderUtility:DL4J為我們準(zhǔn)備了豐富的數(shù)據(jù)集(例如150個(gè)鳶尾花數(shù)據(jù),帶標(biāo)簽),這些內(nèi)容保存在云端(AZURE),通過DownloaderUtility可以很方便的下載和解壓這些數(shù)據(jù)集
- PlotUtil:繪制二維圖形
- VAEPlotUtil:繪制變分自編碼圖形
- 上述四個(gè)類在工程中的位置如下圖所示,限于篇幅就不貼出代碼了,有需要的話請?jiān)趃ithub上獲?。?/li>

在這里插入圖片描述
- 至此,準(zhǔn)備工作就完成了,接下來的旅程會異常精彩,欣宸感謝您的一路相伴!
你不孤單,欣宸原創(chuàng)一路相伴
歡迎關(guān)注公眾號:程序員欣宸
微信搜索「程序員欣宸」,我是欣宸,期待與您一同暢游Java世界...
https://github.com/zq2599/blog_demos