1. 添加dl4j后, run项目时, 一直run不起来, run按钮绿色但是点击没反应。   查看日志后发现: 是classpath太长导致的。

在本项目的.idea文件夹,找到文件夹中的workspace.xml文件,   搜索 PropertiesComponent ,  在其下添加一行设置 :

<property name="dynamic.classpath" value="true" />

  

2. 当添加nd4j系众多jar包时, 一定会出现依赖冲突的情况, 在Settings-plugins中安装 Maven Helper插件, 找到冲突依赖, 并排除掉。

##  学习部分:

1.RNN网络

对于RNN网络, 输入模型的数据是三维结构 [样本数,特征值数,时间步]。 就INDArray中的数据布局而言,位于(i,j,k)的值即是一批数据中第i例的第k个时间步的第j个值。

RnnOutputLayer是在许多循环网络系统(用于回归和分类任务)中使用的最终层。

掩模: 控制一对一, 一对多, 多对一, 多对多的序列输出。 1:该位置存在输出, 0:该位置无输出。

RNN可以使用MultiLayerNetwork.output() 和MultiLayerNetwork.feedForward() 方法生成预测。但它们的限制是,在生成时间序列的预测时,每次都只能从头开始运算。

假设我们需要在一个实时系统中生成基于大量历史数据的预测。在这种情况下,使用output/feedForward方法是不实际的, 比如:

采用output方法,那么我们需要送入全部100个小时的数据,才能预测出第101个小时的天气。而预测第102个小时的天气时,我们又需要送入100(或101)个小时的数据;第103个小时及之后的预测同理。

因此有如下解决办法:

rnnTimeStep(INDArray)方法在被调用时会记录RNN各层的内部状态, 一次只生成一步或数步预测(rnnTimeStep)。

但如果要开始对一个新的(完全分离的)时间序列进行预测,就必须(这很重要)用MultiLayerNetwork.rnnClearPreviousState()方法手动清除已存储的状态。该方法将会重置网络中所有循环层的内部状态。

如果需要存储或设置RNN的内部状态以用于预测,可以对每一层分别使用rnnGetPreviousState和rnnSetPreviousState方法。这适用于例如序列化(网络保存/加载)等情况,因为由rnnTimeStep方法产生的内部网络状态默认不会保存,必须另外保存和读取。

## NDArrays学习:

Physically, the data that backs an INDArray is stored off-heap: that is, it is stored outside of the Java Virtual Machine (JVM).  因此不会收到java数字长度的限制,以及计算时超出内存的影响。

INDArray out = myMatrix.transpose().dup()   dup()方法是深度复制, 不会影响到源矩阵或向量。

myArray.getRow(0).addi(1.0)         myArray.putRow(int rowIdx,INDArray row)

使用java数组创建向量:

创建1维向量:  Nd4j.create(float[])

创建2维向量: Nd4j.create(float[][])

创建3维向量:

myDoubleArray = double[][][]

double[] flat = ArrayUtil.flattenDoubleArray(myDoubleArray)
int[] shape = ...;
INDArray myArr = Nd4j.create(flat,shape,'c');

  

按行拼接两个向量:  Nd4j.hstack()

按列拼接两个向量:  Nd4j.vstack()

取得向量中的值: INDArray.getDouble(i,j,k)

设置向量中的值: INDArray.putScalar(int[], double)

[ rowIdx, : ]     myArray.get(NDArrayIndex.point(rowIdx), NDArrayIndex.all())

[ a:b, : ]           myArray.get(NDArrayIndex.interval(a,b), NDArrayIndex.all())

myArray.get(NDArrayIndex.all(),NDArrayIndex.interval(0,2,nCols))

INDArray.put(INDArrayIndex[], INDArray toPut)

add() 与 addi() 的区别:   addi 将原始向量的引用做为输出引用,   add不会改变原始值, 而是另外申请一个内存空间存放结果。

deeplearing4j学习以及踩过的坑的更多相关文章

  1. 记一次学习kibaba踩过的坑(Windows环境)

    下载地址 ElasticSearch:https://www.elastic.co/cn/downloads/elasticsearchLogstash:https://www.elastic.co/ ...

  2. 《C++之那些年踩过的坑(附录一)》

    C++之那些年踩过的坑(附录一) 作者:刘俊延(Alinshans) 本系列文章针对我在写C++代码的过程中,尤其是做自己的项目时,踩过的各种坑.以此作为给自己的警惕. [版权声明]转载请注明原文来自 ...

  3. Django 踩过的坑(一)

    平台:win10 工具:cmd python3 刚刚学习Django搭建环境,网站还木有发布,就直接来了个大麻烦. 一切按着<Django 学习笔记(二)>这篇文章来的,在最后cmd运行服 ...

  4. 踩过无数坑实现的哈夫曼压缩(JAVA)

    最近可能又是闲着没事干了,就想做点东西,想着还没用JAVA弄过数据结构,之前搞过算法,就试着写写哈夫曼压缩了. 本以为半天就能写出来,结果,踩了无数坑,花了整整两天时间!!orz...不过这次踩坑,算 ...

  5. 小程序——微信小程序初学踩过的坑

    微信小程序初学踩过的坑 一.前言     最近因为某些需要和个人兴趣打算开发一下微信小程序,经过在官方网站上的基本了解,我大体知道了微信小程序开发的大致过程,其实最本质的就是MVVM,借用了很多模式上 ...

  6. python抓取360百科踩过的坑!

    学习python一周,学着写了一个爬虫,用来抓取360百科的词条,在这个过程中.因为一个小小的修改,程序出现一些问题,又花了几天时间研究,问了各路高手,都没解决,终于还是自己攻克了,事实上就是对lis ...

  7. apicloud地图、即时通讯、人脸识别登录、以及平时踩过得坑

    apicloud技术浅谈 导语 apicloud 的学习也有一段时间了,这是我个人的一些经验,和踩过的坑,希望对大家能有一些帮助. apicloud的知识准备 apicloud 是一个用原生的思想搭建 ...

  8. 学习django3过程中的坑

    最近跟着Django by Example 2015学习,可老想用最新版的Django3.在学的过程中可踩了不少坑. 今天就又碰到一个: 在这本书中96页有这样的代码: url(r'^login/$' ...

  9. 那些最全面的Windows10安装pytorch踩过的坑以及如何应用

    那些最全面的Windows10安装pytorch踩过的坑以及如何应用 一.pytorch简介 2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyTorch.它是一个基 ...

随机推荐

  1. 大名鼎鼎的红黑树,你get了么?2-3树 绝对平衡 右旋转 左旋转 颜色反转

    前言 11.1新的一月加油!这个购物狂欢的季节,一看,已囊中羞涩!赶紧来恶补一下红黑树和2-3树吧!红黑树真的算是大名鼎鼎了吧?即使你不了解它,但一定听过吧?下面跟随我来揭开神秘的面纱吧! 一.2-3 ...

  2. 【最短路径Floyd算法详解推导过程】看完这篇,你还能不懂Floyd算法?还不会?

    简介 Floyd-Warshall算法(Floyd-Warshall algorithm),是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似.该算法名称以 ...

  3. 使用FsCheck编写Property-based测试

    使用FsCheck编写Property-based的测试 在编写基于Property-based的单元测试一文中,我们介绍了什么是Property-based测试.同时我们也总结了Property-b ...

  4. 从一个点子到一个社区APP,是如何通过.NET实现的?——“文林物业系统”APP介绍及采访记录

    “文林物业系统”(简称“文林社区”)是一款与物业管理软件无缝衔接的移动端系统.可在线查看通知公告.报修.投诉建议.查询物业管理费.水电气等其他费用,并且支持在线缴费.以物业管理为接入点,在未来,将会致 ...

  5. Excel自动换行、Export2Excel 自动换行

    1需求:导出excel后自动换行显示. 2插件:Export2Excel 3.测试 listToExcel() { import('@/vendor/Export2Excel').then(excel ...

  6. python 自定义模块的发布和安装

    [学习笔记] 自定义模块 使用的是pycharm 说白了就是.py文件都可以作为模块导入,像定义一个文件 名字为Mycode __all__ = ["add","sub& ...

  7. Spring MVC的文件上传和下载

    简介: Spring MVC为文件上传提供了直接的支持,这种支持使用即插即用的MultipartResolver实现的.Spring MVC 使用Apache Commons FileUpload技术 ...

  8. java基础(四):谈谈java中的IO流

    1.字节流 1.1.字节输出流output 1.1.1.数据写入文件中 通过api查找output.找到很多,其中java.io.OutputStream,OutputStream: 输出字节流的超类 ...

  9. ArcGIS API for JavaScript 与 npm 之例子运行

    下载官方的demo,4.7的,在终端里跑了一下,测试成功(未打包) 在测试中精简掉了不需要的文件,使用http协议跑的(file协议不行哦) 最简单的目录如下: 我把以上文件放到一个叫demo的文件夹 ...

  10. MySQL向数据库表的某字段追加数据

    使用CONCAT()函数 mysql向表中某字段后追加一段字符串(field为字段名): update table_name set field=CONCAT(field,'str',) mysql ...