Deeplearning とか 人工知能とか

人工知能について勉強している理科大生

ND4J 行列の定義

m × n行列を定義したいとき Nd4j.createは一次元の行列を引数としますので それがどのような順番で行列に変換されるのか気になったので動かしてみました

import org.nd4j.linalg.api.ndarray.INDArray;
import org.nd4j.linalg.factory.Nd4j;

        INDArray matrixA = Nd4j.create(new float[]{1,2,3,4,5,6,7,8},new int[]{2,4});
        System.out.println("matrixA:\n"+matrixA);

出力
matrixA:
[[1.00, 2.00, 3.00, 4.00],
 [5.00, 6.00, 7.00, 8.00]]

一次元配列は行列に 行方向に一番上からfillされていくようです

列方向の一番左からfillしていくためには

import org.nd4j.linalg.api.ndarray.INDArray;
import org.nd4j.linalg.factory.Nd4j;

        INDArray matrixA = Nd4j.create(new float[]{1,2,3,4,5,6,7,8},new int[]{2,4},'f');
        System.out.println("matrixA:\n"+matrixA);

出力
matrixA:
[[1.00, 3.00, 5.00, 7.00],
 [2.00, 4.00, 6.00, 8.00]]

orderingの小文字'f'を引数にすると使えます