開發十年,就只剩下這套架構體系了! >>>
一、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 order表示列優先。下圖展示了...
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....