ND4J的基本操作

2021-08-28 23:11:48 字數 2014 閱讀 7826

一、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) :元素對應相加,與上面不同的是,返回值不是拷貝出來的新陣列,而是用計算結果替換原記憶體資料

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的在記憶體中的儲存結構 對於nd4j而言,所有的資料都儲存在堆外記憶體,是一維的連續記憶體,indarray 只是指向了這片連續的記憶體空間,把連續記憶體對映成張量,nd4j定義了兩種排序規則 c order和f order,c order表示行優先,f...

dom4j 基本操作

14.一.document物件相關 15.16.1.讀取xml檔案,獲得document物件.17.saxreader reader new saxreader 18.document document reader.read new file input.xml 19.20.2.解析xml形式的文...

Neo4j 基本操作總結

1.建立節點 create b album 2.建立多個節點 create a album b album 3.建立關係 match a artist b album where a.name 筷子兄弟 and b.name 猛龍過江 create a r released b return r1....