1、ND4J的在內存中的存儲結構數組
對於ND4J而言,全部的數據都存儲在堆外內存,是一維的連續內存,INDArray 只是指向了這片連續的內存空間,把連續內存映射成張量,ND4J定義了兩種排序規則:C order和F order,C order表示行優先,F order表示列優先。下圖展現了ND4J的內存存儲。函數
上圖能夠看出,不過張量是幾維,對應的物理存儲都是一維的連續內存空間,NDArray在指向這片連續的地址,這正是ND4J強大的地方,對於各類矩陣操做,例如:矩陣轉置、矩陣加標量等等操做,均可以垂手可得的實現,而不用花力氣去dup一個巨型數組,高性能也表如今這種優雅的設計方式上。性能
2、ND4J的基本操做單元測試
一、加法測試
INDArray add(INDArray other) :元素對應相加,返回的張量是拷貝出來的設計
INDArray addi(INDArray other) :元素對應相加,與上面不一樣的是,返回值不是拷貝出來的新數組,而是用計算結果替換原內存數據blog
INDArray add(Number n):每一個元素加上一個標量排序
INDArray addi(Number n):每一個元素加上一個標量,並覆蓋原數組內存
二、減法element
INDArray sub(Number n):每一個元素減去一個標量
INDArray subi(Number n):每一個元素減去標量,並覆蓋原數組
INDArray sub(INDArray other):對應元素相減
INDArray subi(INDArray other):對應元素相減,並覆蓋原數組
三、乘法
乘法分兩種,對應元素相乘和矩陣乘法
INDArray mul(INDArray other):對應元素相乘
INDArray muli(INDArray other):對應元素相乘,並覆蓋原數組
INDArray mmul(INDArray other):矩陣相乘
INDArray mmuli(INDArray other):矩陣相乘,並覆蓋原數組
四、除法
INDArray div(INDArray other):對應元素相除
INDArray divi(INDArray other):對應元素相除並覆蓋原數組
INDArray div(Number n):每一個元素除以一個標量
INDArray divi(Number n):每一個元素除以一個標量,並覆蓋原數組
五、矩陣轉置
INDArray transpose()
INDArray transposei()
總結一下:後面以i結尾的方法,表示in place,也就是會覆蓋原內存空間的數據,和」傳引用「一個意思
六、張量建立
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):隨機對應形狀的張量
七、張量設置值
INDArray putScalar(int[] i, double value):對應位置設置標量
INDArray putScalar(int row, int col, double value):對應行列處設置標量
INDArray put(INDArrayIndex[] indices, INDArray element):對應維度處設置INDArray
八、其餘操做
INDArray reshape(int... newShape):從新定義張量形狀
這裏只是列舉了ND4J的一些經常使用操做,ND4J還定義了不少對應張量靈活的操做,例如求和、求平均、求最大值、求最小值、BooleanIndexing根據條件替換張量值、經常使用函數操做(sigmoid、tanh等等),要了解更多的詳情,能夠深刻去看DL4J的example或者單元測試,去體驗這個優秀的張量運算庫。
---------------------------------------------------------------------------------------------------------
快樂源於分享。
此博客乃做者原創, 轉載請註明出處