Deeplearning とか 人工知能とか

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

ND4J 行列計算

ND4Jの勉強をしている時に 同じ形をした行列の要素ごとの計算が必要になったので まとめてみようとおもいます INDArrayクラス Nd4jクラス

行列の要素毎の積

INDArray mul(INDArray);

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

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


出力
returnMatrix:
[1.00, 4.00, 9.00, 16.00]

行列の要素毎の商(割り算)

INDArray div(INDArray);

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

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

出力
returnMatrix:
[1.00, 1.00, 1.00, 1.00]

行列の要素毎の和

INDArray addi(INDArray);

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

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


出力
returnMatrix:
[2.00, 4.00, 6.00, 8.00]

行列の要素毎の差

INDArray sub(INDArray);

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

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


出力
returnMatrix:
[0.00, 0.00, 0.00, 0.00]