DL4J的矩阵处理模块ND4J的常用函数整理

ND4J矩阵变换的常用函数整理

由本人阅读nd4j源码整理,nd4j是dl4j为了矩阵运算整出来的一套工具。对应python里的numpy,但是并没有numpy那么普及,不过至少使用dl4j搭建神经网络以及数据预处理时,会使用nd4j是必不可少的。

nd4j还有个功能是可以创建工作区workspace用来管理堆内存的回收,或者我们直接扔给GC来管理INDArray的内存回收就好。这个功能以后有机会再说,那么进入正题:

  • 矩阵创建

方法

用法

Nd4j.zeros / ones / valueArrayOf

 

创建全部元素都是0/1/value的矩阵或向量

通用函数:

valueArrayOf(int[] shape, double value)

实数版:

complexValueOf

Nd4j.create

将double数组转化为N维向量

create(double [] data,int [] shape)

二维数组

Create(double [][] data)

Nd4j.rand

输出随机矩阵,(0,1)之间随机值

rand(int [] shape)

rand(int [] shape, long seed)

Nd4j.linspace

输出数值等差的一维向量

Nd4j.diag

以某个标量/向量/矩阵为对角生成对角矩阵

Nd4j.eye

单位矩阵

 

  • 矩阵属性

属性

用法

Rows,columns

可以用getRow和getColumn获取某一行或者某一列的视图,并可以通过修改视图对原始数据进行局部修改。不想对原数据修改,可调用dup函数进行复制。

可以用rows和columns来获取有多少行多少列

shape

Int[] 返回每一维的维度 (Arrays.toString可用于打印维度)

rank

维数

length

总共元素的个数(各个维度相乘)

data()

返回一个线性double数组替代这个INDArray

 

  • 矩阵数值变换、点积

方法

用法

get

get(INDArrayIndexes...indexes)

获取每一维的某几个index的数据组成的视图。对该视图的直接操作将影响原始数据。

subArray

offset,shape ,stride

返回子图

addi

add

sub

rsub

mul

div

rdiv

neg

eq

标量的加减乘除取负比较等等,

后面加i代表in_place就是替换原数据的意思。

前面加r就是用参数来减、除矩阵中的value。

对每个矩阵中的值做操作,都是标量计算。

add和mul参数可以传入和被操作数大小相同的矩阵,即两个矩阵对应的每个参数相加或相乘

put

替换矩阵中的某些值

putscalar

标量替换某些值

reshape

将矩阵变换为新的维数和维度的矩阵,但是length要保证相等

参数order是’c’/’f’

用C样索引顺序读取/写入元素,最后一个轴索引变化最快,回到第一个轴索引变化最慢。'F'意味着使用Fortran样索引顺序读取/写入元素,第一个索引变化最快,最后一个索引变化最慢。

上面这个是numpy中reshape的Order参数的含义,在Nd4j中应该雷同

permute/permutei

改变矩阵中维度的顺序

transpose/transposei

转置

linearView

返回展开成一维矩阵

 

  • 矩阵的拼接

方法

用法

Nd4j.hstack

横向拼接矩阵(row相同)

Nd4j.vstack

纵向拼接矩阵(column相同)

concat

指定维度拼接

concat(int dimension, INDArray... toConcat)

 

 

 

 

 

 

 

 

 

 

  • 矩阵的叉乘以及元素运算等

 

方法

用法

mmul

矩阵叉乘,注意两个相乘矩阵的行列对应关系。前者的列数等于后者的行数

BooleanIndexing.and/or

通过传入函数以及范围来返回bool值对矩阵元素进行判断

BooleanIndexing.applyWhere/replaceWhere

对满足条件的矩阵中的值进行替换或其他操作

max/min/sum

amax

指定维度的max、min、sum等

前面加a是absolute绝对值的意思

sigmond/abs/tanh/exp/sqrt/log等

相应的函数值,都是常用的计算函数

 

 

 

 

 

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值