ND4J的基本操作总结-创新互联

这篇文章主要讲解了“ND4J的基本操作总结”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ND4J的基本操作总结”吧!

创新互联建站主要从事成都网站制作、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务阳谷,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575

一、ND4J的在内存中的存储结构

    对于ND4J而言,所有的数据都存储在堆外内存,是一维的连续内存,INDArray 只是指向了这片连续的内存空间,把连续内存映射成张量,ND4J定义了两种排序规则:C order和F order,C order表示行优先,F order表示列优先。下图展示了ND4J的内存存储。

    上图可以看出,不过张量是几维,对应的物理存储都是一维的连续内存空间,NDArray在指向这片连续的地址,这正是ND4J强大的地方,对于各种矩阵操作,例如:矩阵转置、矩阵加标量等等操作,都可以轻而易举的实现,而不用花力气去dup一个巨型数组,高性能也表现在这种优雅的设计方式上。

二、ND4J的基本操作

    1、加法

    INDArray add(INDArray other)  :元素对应相加,返回的张量是拷贝出来的

    INDArray addi(INDArray other) :元素对应相加,与上面不同的是,返回值不是拷贝出来的新数组,而是用计算结果替换原内存数据

    INDArray add(Number n):每个元素加上一个标量

    INDArray addi(Number n):每个元素加上一个标量,并覆盖原数组

    2、减法

     INDArray sub(Number n):每个元素减去一个标量

    INDArray subi(Number n):每个元素减去标量,并覆盖原数组

    INDArray sub(INDArray other):对应元素相减

     INDArray subi(INDArray other):对应元素相减,并覆盖原数组

    3、乘法

    乘法分两种,对应元素相乘和矩阵乘法

    INDArray mul(INDArray other):对应元素相乘

    INDArray muli(INDArray other):对应元素相乘,并覆盖原数组

     INDArray mmul(INDArray other):矩阵相乘

    INDArray mmuli(INDArray other):矩阵相乘,并覆盖原数组

    4、除法

    INDArray div(INDArray other):对应元素相除

    INDArray divi(INDArray other):对应元素相除并覆盖原数组

    INDArray div(Number n):每个元素除以一个标量

    INDArray divi(Number n):每个元素除以一个标量,并覆盖原数组

    5、矩阵转置

     INDArray transpose()

    INDArray transposei()

    总结一下:后面以i结尾的方法,表示in place,也就是会覆盖原内存空间的数据,和”传引用“一个意思

    6、张量创建

    Nd4j类中定义了很多静态方法,用于创建N维张量,用法例如: Nd4j.zeros(nRows, nColumns)

    public static INDArray zeros(int rows, int columns) :创建一个全部元素为0的张量

     public static INDArray ones(int rows, int columns) :创建一个全部元素为1的张量

    public static INDArray hstack(INDArray... arrs):沿着水平方向接起多个矩阵,矩阵必须有相同的行

    public static INDArray vstack(INDArray... arrs):沿着垂直方向接起多个矩阵,矩阵必须有相同的列

     public static INDArray rand(int rows, int columns):随机对应形状的张量

    public static INDArray rand(int[] shape):随机对应形状的张量

    7、张量设置值

    INDArray putScalar(int[] i, double value):对应位置设置标量

    INDArray putScalar(int row, int col, double value):对应行列处设置标量

    INDArray put(INDArrayIndex[] indices, INDArray element):对应维度处设置INDArray

    8、其他操作

    INDArray reshape(int... newShape):重新定义张量形状

    这里只是列举了ND4J的一些常用操作,ND4J还定义了很多对应张量灵活的操作,例如求和、求平均、求大值、求最小值、BooleanIndexing根据条件替换张量值、常用函数操作(sigmoid、tanh等等),要了解更多的详情,可以深入去看DL4J的example或者单元测试,去体验这个优秀的张量运算库。

感谢各位的阅读,以上就是“ND4J的基本操作总结”的内容了,经过本文的学习后,相信大家对ND4J的基本操作总结这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!

当前题目:ND4J的基本操作总结-创新互联
网页地址:https://www.cdcxhl.com/article22/codocc.html

成都网站建设公司_创新互联,为您提供品牌网站制作商城网站网页设计公司微信小程序面包屑导航服务器托管

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都app开发公司