上一篇博客《梯度下降法求多元线性回归及Java实现》简单了介绍了梯度下降法,并用Java实现了一个梯度下降法求回归的例子。本篇博客,尝试用dl4j的张量运算库nd4j来实现梯度下降法求多元线性回归,并比较GPU和CPU计算的性能差异。
一、ND4J简介
ND4J是DL4J提供的张量运算库,提供了多种张量运算的封装,以下内容复杂于ND4J官网:
ND4J和ND4S是JVM的科学计算库,并为生产环境设计,亦即例程运行速度快,RAM要求低。
主要特点:
多用途多维数组对象
多平台功能,包括GPU
线性代数和信号处理功能
由于易用性上存在的缺口,Java、Scala和Clojure编程人员无法充分利用NumPy或Matlab等数据分析方面最强大的工具。Breeze等其他库则不支持多维数组或张量,而这却是深度学习和其他任务的关键。ND4J和ND4S正得到国家级实验室的使用,以完成气候建模等任务。这类任务要求完成计算密集的模拟运算。
ND4J在开源、分布式、支持GPU的库内,为JVM带来了符合直觉的、Python编程人员所用的科学计算工具。在结构上,ND4J与SLF4J相似。ND4J让生产环境下的工程师能够轻松将算法和界面移植到Java和Scala体系内的其他库内。
更详细的特性,可以去nd4j官网了解,地址:https://nd4j.org/cn
二、具体实现
1、maven配置
首先建一个maven工程,pom.xml完整配置如下:
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
org.dl4j
linear-regression
0.0.1-SNAPSHOT
jar
linear-regression
http://maven.apache.org
UTF-8
1.1.7
1.0.0-beta
nd4j-native-platform
org.nd4j
${nd4j.backend}
${nd4j.version}
ch.qos.logback
logback-classic
${logback.version}
junit
junit
3.8.1
test
说明:nd4j-native-platfor