该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

一、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的基本操作相关推荐

  1. nd4j 向量_DL4J中文文档/ND4J/元素操作

    元素操作比矢量操作更直观,因为一个矩阵的元素清楚地映射到另一个矩阵上,为了获得结果,你只需要执行一个算术操作.(示例代码位于此处.) 对于向量矩阵运算,你必须首先建立直觉,并执行多个步骤.矩阵乘法有两 ...

  2. TensorFlow简介:向量对象

    目录 介绍 背景 向量作为数字列表 使用NumPy库 使用TensorFlow 使用代码 总结 介绍 在机器学习中,向量可以用作表示数字数据的好方法.使用向量时,我们可以满足以下基本操作: 添加两个向 ...

  3. 数据结构与算法之-----向量(Vector)

    [ 写在前面的话:本专栏的主要内容:数据结构与算法. 1.对于​​​​​​​初识数据结构的小伙伴们,鉴于后面的数据结构的构建会使用到专栏前面的内容,包括具体数据结构的应用,所使用到的数据结构,也是自己 ...

  4. 线性代数(预备知识)

    文章目录 线性代数 标量 向量 长度.维度.形状 矩阵 张量 张量算法的基本性质 降维 非降维求和 点积(Dot Production) 矩阵-向量积 矩阵-矩阵乘法 范数 范数和目标 小结 线性代数 ...

  5. matlab常用指令

    一 matlab常用函数 1.特殊变量与常数 ans 计算结果的变量名        computer 确定运行的计算机        eps 浮点相对精度        Inf 无穷大        ...

  6. Matlab的一些术语

    出处不详,感谢原作者. 一 matlab常用函数 1. 特殊变量与常数 ans 计算结果的变量名         computer 确定运行的计算机         eps 浮点相对精度        ...

  7. 背出来matlab就无敌了

    背出来,Matlab就无敌了  来源: 卞金鑫的日志 一 matlab常用函数 1. 特殊变量与常数 ans 计算结果的变量名         computer 确定运行的计算机         ep ...

  8. matlab的tfdata函数_MATLAB 主要函数指令表(按功能分类)

    15句柄图形(Handle Graphics) 15.1图形窗的产生和控制(Figure window creation and control) clf 清除当前图 close 关闭图形 figur ...

  9. [转]MATLAB 主要函数指令表(按功能分类)

      1 常用指令(General Purpose Commands) 1.1 通用信息查询(General information) demo 演示程序 help 在线帮助指令 helpbrowser ...

最新文章

  1. unity3d优化IOS
  2. 四章: CentOS6.5 配置连接Windows远程桌面、创建新用户、禁用root在本地或远程使用ssh登录
  3. [Java] grails 安装手记
  4. Jenkins全新的UI体验-Blue Ocean
  5. 使用PhantomJS实现网页截图服务
  6. react router官方文档_阿里开源可插拔 React 跨端框架 UmiJS
  7. 使用 .Net Memory Profiler 诊断 .NET 应用内存泄漏(方法与实践)
  8. Android String占位符功能
  9. XMind8update6 补丁
  10. 最小二乘法曲线拟合以及Matlab实现
  11. 房贷计算器移动端接口
  12. 色彩系列教程(3):实际运用
  13. 中信银行总行信息科技岗2019年校园招聘
  14. 【绝对详细!不好使你顺着网线敲我!】Django3.1在Ubuntu16.04上的部署
  15. c语言windows头文件包含,不包含windows.h和window.h内的任何头文件,弹框 “Hello, world!”...
  16. this.$emit()
  17. 数据结构--逻辑结构和存储结构区别和内容
  18. Internet安全协议 学习笔记
  19. java开发中JWT、JWE、JWS 、JWK 都是干啥的
  20. 企业展示方式有哪些?

热门文章

  1. Spring Boot 初步小结
  2. POJ2139 Six Degrees of Cowvin Bacon【Floyd算法】
  3. JSK-118 输出格式练习【入门】
  4. POJ3750 小孩报数问题【模拟】
  5. ICPC程序设计题解书籍系列之三:秋田拓哉:《挑战程序设计竞赛》(第2版)
  6. LeetCode 堆栈队列 —— 括号匹配(20、232、155)
  7. Python 爬虫工具 —— fake_useragent
  8. R 语言下常用第三方库的说明
  9. C/C++ —— 字典(dictionary)接口的设计
  10. 趣学 C 语言(十二)—— 文件操作