
DeepLearning4j
文章平均质量分 65
框架学习,源码阅读,例子实践。
寒沧
渣渣学生
展开
-
DeepLearning4j - INDArray 转为图像
DeepLearning4j - INDArray 转为图像三通通道彩色图代码引自:https://github.com/sjsdfg/dl4j-tutorials/blob/master/src/main/java/styletransfer/NeuralStyleTransfer.java /** * Takes an INDArray containing an image load...原创 2019-01-12 18:47:32 · 1523 阅读 · 0 评论 -
Deeplearning4j - 入门视频
Deeplearning4j - 入门视频因为Deeplearning4j的资料较少,而且并无国内的视频资料。因此个人录制了一套Deeplearning4j的入门级视频,目前视频上传在 Bilibili,无广告大家看起来也方便:【教程】Deeplearning4j入门(一)- 寒沧【教程】Deeplearning4j入门(二)ND4J基本操作- 寒沧【教程】Deeplearn...原创 2018-06-08 23:42:16 · 8359 阅读 · 15 评论 -
Deeplearning4j-使用Cuda 9.1和 Cudnn7.1 加速模型训练
Deeplearning4j-使用Cuda 9.1和 Cudnn7.1 加速模型训练一、卸载Cuda (可选)我本机原本安装的版本为 Cuda 8.0,因为Dl4j更新版本之后,支持 Cuda 9.1,因此需要先对原有软件进行卸载。我电脑的操作系统为win 10,在你安装完成以后,会有如下图所示的安装软件:除了图中用红框标注的这三个,全部卸载。即可完成cuda的卸载...原创 2018-05-17 22:05:55 · 2918 阅读 · 2 评论 -
超参数总结
超参数总结损失函数选择权重初始化学习率learning rate学习速率计划learning rate schedule激活函数Epoch数量和迭代次数更新器和优化算法梯度标准化 Gradient Normalization微批次大小miniBatch网络层数和隐藏单元个数正则化额外链接超参数总结损失函数选择回归任务通常选择MSE、MEAN_ABSOLUTE_ERROR等原创 2017-12-05 14:55:51 · 9470 阅读 · 0 评论 -
下载cuDNN历史版本方法
下载cuDNN历史版本方法打开https://developer.nvidia.com/登录。点击Deep Learning SDK 点击Download deep learning software 点击cuDNN 点击Download 填完一系列问卷之后就可以进行下载: 链接大全:Download cuDNN v7.0.5 (Dec 11, 2017),原创 2018-01-11 10:30:58 · 28762 阅读 · 0 评论 -
Deeplearning4j - ND4j方法快速索引
Deeplearning4j - ND4j方法快速索引ND4J和ND4S是JVM的科学计算库,并为生产环境设计,亦即例程运行速度快,RAM要求低。主要特点:多用途多维数组对象多平台功能,包括GPU线性代数和信号处理功能由于易用性上存在的缺口,Java、Scala和Clojure编程人员无法充分利用NumPy或Matlab等数据分析方面最强大的工具。Breeze等其他库则不支...原创 2018-04-28 21:43:18 · 3277 阅读 · 0 评论 -
Deeplearning4j - 使用nd4j导入tensorflow模型
Deeplearning4j - 使用nd4j导入tensorflow模型在dl4j-example里面新增了模型导入的例子,这里简单的说一下。在dl4j新版本的特性介绍:https://github.com/deeplearning4j/deeplearning4j-docs/blob/releasenotes_100a/releasenotes.md 中,对于nd4j的模型导入进行...原创 2018-04-20 22:55:52 · 2637 阅读 · 0 评论 -
Cuda8.0安装地址合集
Cuda安装win10版本链接linux版本链接win7版本链接(尚未验证)注意事项安装检测官网地址补充补充注意事项Cuda安装win10版本链接cuda_8.0.44_win10-exelinux版本链接cuda_8.0.61_375.26_linux-runwin7版本链接(尚未验证)百度云cuda地址,cuda_8.0...原创 2017-11-24 11:29:18 · 13283 阅读 · 0 评论 -
DeepLearning4j-使用Java训练YOLO模型
DeepLearning4j-使用Java训练YOLO模型在这个Yolo v3发布的大好日子。 Deeplearning4j终于迎来了新的版本更新1.0.0-alpha,在zoo model中引入TinyYolo模型可以训练自己的数据用于目标检测。 不得不说,在Yolo v3这种性能和准确率上面都有大幅度提升的情况下,dl4j才引入TinyYolo总有一种49年加入国军的感觉...原创 2018-04-10 19:52:41 · 13329 阅读 · 13 评论 -
ND4J序列化和反序列INDArray
import org.nd4j.linalg.api.ndarray.INDArray;import org.nd4j.linalg.factory.Nd4j;import org.nd4j.serde.binary.BinarySerde;import java.io.*;import java.nio.ByteBuffer;INDArray arrWrite = Nd4j.lin...原创 2018-03-23 16:23:15 · 1724 阅读 · 0 评论 -
ND4J读取图片
一、构建加载器NativaImageLoader loader = new NativeImageLoader(height, width, channels);构建图片加载器,顺便完成了对图片的缩放功能,可以直接用于fit网络模型。height: 图片的高width: 图片的宽channels: 图片通道数,3为彩色,1为黑白二、图片读取INDArray ...原创 2018-03-22 21:34:28 · 1054 阅读 · 0 评论 -
Java构建汽车无人驾驶:汽车目标检测
Java构建汽车无人驾驶:汽车目标检测Java Autonomous Driving: Car Detection 原文地址: https://dzone.com/articles/java-autonomous-driving-car-detection-1在这篇文章中,我们将用Java构建一个实时视频对象检测应用程序,用于汽车检测,这是自动驾驶系统的一个关键组件。 在之前的文章...翻译 2018-03-03 19:02:11 · 6101 阅读 · 0 评论 -
Dl4j使用Spark分布式训练指定CPU后端训练
Dl4j使用Spark分布式训练指定CPU后端训练问题描述1、打包dl4j应用程序,使用spark-submit在spark集群上分布式运行; 示例提交命令:spark-submit --class cn.nd4jonSpark.Nd4jTest --master spark://storm6:7077 --deploy-mode client ...原创 2018-02-09 16:43:24 · 1538 阅读 · 0 评论 -
Deeplearning4j分布式训练:梯度共享
Deeplearning4j分布式训练:梯度共享0.9.1版本(或0.9.2-SNAPSHOT)起,DeepLearning4j开始支持Apache Spark环境中的分布式训练,同时支持在Spark环境外用Aeron实现高性能节点间通信。分布式训练的核心思想很简单:每个工作器根据自己的数据集计算梯度。 在梯度被用于调整网络权重之前,它们会首先在一个中间存储机制中(每台计算机有一个)累翻译 2018-01-25 10:48:54 · 2321 阅读 · 0 评论 -
NDArray的shapeInfo信息
在对涉及到使用NDArray类型的信息的Debug中,总是会对debug信息里面出现的shapeInfo的长度刚到疑惑。 经过阅读源码发现:/** * Creates the shape information buffer * given the shape,stride * @param shape the shape for the buffer原创 2018-01-23 15:42:11 · 761 阅读 · 0 评论 -
Deeplearning4j模型保存至HDFS
Deeplearning4j模型保存至HDFSDeeplearning4j支持训练出来的网络模型存储在HDFS上: 上面示例图中的代码不是很全,这里进行简易补全需要引入的HDFS的包如下:import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FSDataOutputStream;...原创 2018-01-20 13:48:01 · 1701 阅读 · 0 评论 -
在Deeplearning4j中使用cuDNN
在Deeplearning4j中使用cuDNNDeeplearning4j支持cuda,但是也支持使用cuDNN实现更进一步的加速。自从版本0.9.1之后,CNNs和LSTMs网络都支持cuDNN加速。 注意: cuDNN并不支持GravesLSTM网络层,请考虑使用LSTM网络层进行替代。为了使用cuDNN,你首先需要切换Nd4j的后端至CUDA后端。这个可以通过在你项目中的pom.xml将nd翻译 2018-01-10 21:59:57 · 1630 阅读 · 0 评论 -
Deeplearning4j - Intel MKL FATAL ERROR:Cannot load mkl_intel_thread.dll
Deeplearning4j - Intel MKL FATAL ERROR:Cannot load mkl_intel_thread.dll在windows上运行deeplearning4j的时候可能遇到Intel MKL FATAL ERROR:Cannot load mkl_intel_thread.dll错误导致JVM故障。在官网上面所给出的解决方案是: Maven Cent...原创 2018-01-04 20:17:24 · 4993 阅读 · 12 评论 -
deeplearning4j梯度标准化策略
deeplearning4j梯度标准化策略deeplearning4j一共提供了如下策略:package org.deeplearning4j.nn.conf;public enum GradientNormalization { None, RenormalizeL2PerLayer, RenormalizeL2PerParamType, ClipElementWiseA原创 2018-01-04 19:29:30 · 1280 阅读 · 0 评论 -
Dl4j学习率衰减策略
Dl4j学习率衰减策略package org.deeplearning4j.nn.conf;/** * Learning Rate Policy * * How to decay learning rate during training. * * <p><b>None</b> = do not apply decay policy aka fixed in Caffe <br> * <原创 2018-01-03 14:37:00 · 990 阅读 · 0 评论 -
获取AutoEncoder中间层输出
获取AutoEncoder中间层输出dl4j对于自动编码机提供了多种实现形式深度自动编码器降噪自动编码器堆叠式降噪自动编码器在dl4j中,对于MultiLayerNetwork提供了两个方法net.activate(layer, input)net.feedForwardToLayer(layNum,input)可以用于获取中间输出, 通过在github上面gitter的作者提供,应当使原创 2017-12-21 15:57:49 · 2279 阅读 · 0 评论 -
工作区指南(Workspaces Guide)
工作区指南自0.9.0版(或0.8.1-SNAPSHOT版)开始,ND4J提供一种额外的内存管理模式:工作区。该模式让您可以将内存重复用于循环工作负荷,而无需依赖JVM垃圾回收器来跟踪堆外内存。换言之,在工作区循环结束时,所有INDArray的内存内容都会被废弃。在ND4J中使用该模式的具体方法参见这些示例。基本的思路很简单:您可以在一个或多个工作区内部进行任何所需的操作,如果想要将一个INDArr翻译 2017-12-19 19:48:40 · 805 阅读 · 0 评论 -
ND4J/DL4J的内存管理:工作原理
ND4J/DL4J的内存管理:工作原理ND4J使用堆外内存存储N维数组NDArray,以便提升从本机代码(例如BLAS和CUDA库)使用NDArray时的性能。 “堆外”意味着系统分配的这部分内存位于JVM(Java虚拟机)之外,因此不受JVM垃圾回收器(GC)的管理。在Java/JVM一侧,我们只设置指向堆外内存的指针,可以传递给底层的C++代码(通过JNI),用于ND4J运算。我们用两种方法管理翻译 2017-12-19 19:16:53 · 2134 阅读 · 0 评论 -
Deeplearning4j的本机CPU优化
Deeplearning4j的本机CPU优化本页指南将介绍在DL4J和ND4J上调试或提升CPU系统性能的几种方法。让我们先来定义一些术语:OpenMPOpenMP是一个开源的并行编程API,支持C/C++/Fortran语言。ND4j使用以C++编写的后端,因此我们用OpenMP来改善CPU的并行计算性能。CPU、内核、超线程一个CPU通常是由多个内核组成的单个物理单元。每个内核都能独立处理指令,翻译 2017-12-19 13:34:07 · 1389 阅读 · 0 评论 -
Dl4j-fit(DataSetIterator iterator)源码阅读(九) 利用梯度更新参数
在前面我们已经通过反向传播计算出梯度。 并且梯度也经过梯度标准化,已经L1, L2参数的调整,接下来继续返回到StochasticGradientDescent.optimize()方法中继续执行以下语句//先获取模型的参数INDArray params = model.params();//然后使用StepFunction对参数进行更新stepFunction.step(params, g原创 2017-12-11 14:37:16 · 528 阅读 · 0 评论 -
Dl4j-fit(DataSetIterator iterator)源码阅读(八) 根据参数更新梯度
前面经过反向传播,已经计算出了模型的损失函数得分以及梯度,在反向传播完成之后会返回到package org.deeplearning4j.optimize.solvers包下的BaseOptimizer.gradientAndScore()方法体重继续执行,该方法体中继续执行。反向传播计算完的参数还需要经过梯度正则化以及L1,L2参数惩罚@Overridepublic Pair<Gradient,原创 2017-12-08 17:02:29 · 823 阅读 · 0 评论 -
Dl4j-fit(DataSetIterator iterator)源码阅读(七) 损失函数得分计算
在反向传播计算完梯度和误差之后,返回到MultiLayerNetwork.computeGradientAndScore()方法中继续计算输出函数的偏差MultiLayerNetwork.computeGradientAndScore()@Overridepublic void computeGradientAndScore() { //Calculate activations (whi原创 2017-12-08 11:02:24 · 714 阅读 · 0 评论 -
Dl4j-fit(DataSetIterator iterator)源码阅读(六) 反向传播部分
1 backprop()/** Calculate and set gradients for MultiLayerNetwork, based on OutputLayer and labels*/protected void backprop() { Pair<Gradient, INDArray> pair = calcBackpropGradients(null, true);原创 2017-12-06 20:51:02 · 684 阅读 · 0 评论 -
Dl4j-fit(DataSetIterator iterator)源码阅读(五)正向传播
接下来执行的就是preOutput()如下的两条语句:INDArray b = getParam(DefaultParamInitializer.BIAS_KEY);INDArray W = getParam(DefaultParamInitializer.WEIGHT_KEY);用于获取当前层的权重和偏值。之后继续执行的是输入的有效性判断以及是否使用dropoutConnect,当前的网络架构没原创 2017-12-05 21:00:53 · 440 阅读 · 0 评论 -
Dl4j-fit(DataSetIterator iterator)源码阅读(四)dropout
preOut这一部分就是网络模型前向传播的重点。public INDArray preOutput(boolean training) { applyDropOutIfNecessary(training); INDArray b = getParam(DefaultParamInitializer.BIAS_KEY); INDArray W = getParam(Defau原创 2017-12-05 20:08:58 · 731 阅读 · 0 评论 -
Dl4j-fit(DataSetIterator iterator)源码阅读(三)
2.3.3.1 gradientAndScore();这里用于获取梯度和分数@Overridepublic Pair<Gradient, Double> gradientAndScore() { oldScore = score; model.computeGradientAndScore(); if (iterationListeners != null && iterat原创 2017-12-04 16:30:43 · 417 阅读 · 0 评论 -
Dl4j-fit(DataSetIterator iterator)源码阅读(二)
2.3.3 solver.optimize()optimezie()方法首先需要判断solver类中的optimizer字段是否为空。public void optimize() { if (optimizer == null) optimizer = getOptimizer(); optimizer.optimize();}如果为空则需要调用getOptimiz原创 2017-12-01 20:21:25 · 394 阅读 · 0 评论 -
Dl4j-fit(DataSetIterator iterator)源码阅读(一)
fit(DataSetIterator iterator)源码阅读1 网络模型//Create the networkint numInput = 1;int numOutputs = 1;int nHidden = 2;MultiLayerNetwork net = new MultiLayerNetwork(new NeuralNetConfiguration.Builder()原创 2017-12-01 16:46:32 · 1472 阅读 · 0 评论