欢迎访问我的GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
关于DL4J
- DL4J是Deeplearning4j的简称,是基于Java虚拟机的深度学习框架,是用java和scala开发的,已开源,官网:https://deeplearning4j.org/
关于《DL4J实战》系列
- 《DL4J实战》是欣宸在深度学习领域的原创,旨在通过一系列动手操作,由浅入深了解深度学习的基本知识,掌握通用操作,并且对DL4J逐渐熟练,进而在学习和工作中解决实际问题
本篇概览
- 作为《DL4J实战》系列的开篇,本文为后面的文章和实战做好准备工作,包含以下内容:
- 确定环境和版本信息
- 创建名为dl4j-tutorials的maven工程作为父工程,后面整个系列的代码都是dl4j-tutorial的子工程
- 创建名为commons的子工程,这里面是一些常用的工具代码,例如下载数据集、绘图等
源码下载
- 本篇实战中的完整源码可在GitHub下载到,地址和链接信息如下表所示(https://github.com/zq2599/blog_demos):
名称 | 链接 | 备注 |
---|---|---|
项目主页 | https://github.com/zq2599/blog_demos | 该项目在GitHub上的主页 |
git仓库地址(https) | https://github.com/zq2599/blog_demos.git | 该项目源码的仓库地址,https协议 |
git仓库地址(ssh) | git@github.com:zq2599/blog_demos.git | 该项目源码的仓库地址,ssh协议 |
- 这个git项目中有多个文件夹,《DL4J实战》系列的源码在dl4j-tutorials文件夹下,如下图红框所示:
版本信息
本系列实战都是在以下环境进行,这里列出来供您参考:
- 操作系统:win10 64位专业版
- JDK:1.8.0_281
- maven:3.6.2
- IEDA:2021.1.1 (Ultimate Edition)
- DL4J:1.0.0-beta7
《DL4J实战》系列源码的公用父工程
- 《DL4J实战》系列的源码都放置在同一个父工程下,除了管理代码方便,还可以将各个子工程的依赖库版本统一管理,接下来创建这个父工程;
- 新建名为dl4j-tutorials的maven工程,该工程下只有pom.xml,内容如下:
<?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
- 后面的实战中,我们常用到下载文件、绘图等功能,因此新增一个子工程,将下载绘图等功能对应的工具类都在这里面给其他工程使用
- 在dl4j-tutorials下新增名为commons的子工程,其pom.xml内容如下:
<?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子工程中有四个类,并非欣宸原创,而是来自DL4J的官方demo,其功能简介如下:
- DataUtilities:下载和解压指定地址对应的文件
- DownloaderUtility:DL4J为我们准备了丰富的数据集(例如150个鸢尾花数据,带标签),这些内容保存在云端(AZURE),通过DownloaderUtility可以很方便的下载和解压这些数据集
- PlotUtil:绘制二维图形
- VAEPlotUtil:绘制变分自编码图形
- 上述四个类在工程中的位置如下图所示,限于篇幅就不贴出代码了,有需要的话请在github上获取:
- 至此,准备工作就完成了,接下来的旅程会异常精彩,欣宸感谢您的一路相伴!
你不孤单,欣宸原创一路相伴
- Java系列
- Spring系列
- Docker系列
- kubernetes系列
- 数据库+中间件系列
- DevOps系列