前提
行列を使用して、マッピングをしたいと思っています。単純に自分のいる場所を中心にして、移動するたびに行列の大きさを変更して行くものです。
ちなみにAPI(Application Interface)は使用するメソッドとかクラスのことです。
ND4Jって?
Deep Learning 4J でも使用する行列計算用のフレームワーク(ライブラリ)です。細かい部分は上記のリンク先に記載してあります。(英語)
兎にも角にもコードを書いてみないと始まらないので書きます。
行列の作成
初めに3x3の行列を作成する。今後は2x3(例外が出ます)とか数値の部分を変更してやれば良い。
INDArray data = Nd4j.create(new int[] {3, 3}); System.out.println("*** init ***"); System.out.println(data);
指定した部分の値を変更する
System.out.println("*** putScalar ***"); System.out.println(data.putScalar(new int[] {2, 1}, 1.0));
行列のサイズを変更する
INDArray reData = Nd4j.ones(new int[] {3, 3}); System.out.println(reData); System.out.println(Nd4j.pad(reData, new int[] {1, 1}, Nd4j.PadMode.CONSTANT));
<出力したログ>
*** init zeros*** [[0.00, 0.00, 0.00], [0.00, 0.00, 0.00], [0.00, 0.00, 0.00]] *** putScalar *** [[0.00, 0.00, 0.00], [0.00, 0.00, 0.00], [0.00, 1.00, 0.00]] *** init ones *** [[1.00, 1.00, 1.00], [1.00, 1.00, 1.00], [1.00, 1.00, 1.00]] [[0.00, 0.00, 0.00, 0.00, 0.00], [0.00, 1.00, 1.00, 1.00, 0.00], [0.00, 1.00, 1.00, 1.00, 0.00], [0.00, 1.00, 1.00, 1.00, 0.00], [0.00, 0.00, 0.00, 0.00, 0.00]]
追記
1で初期化した後に全ての値に3を足す処理
// 1の値で初期化された配列に全て3を足す INDArray reData = Nd4j.ones(new int[] {3, 3}).addi(3); System.out.println(reData);
<出力結果>
[[4.00, 4.00, 4.00], [4.00, 4.00, 4.00], [4.00, 4.00, 4.00]]
でわでわ。。。