問題:
數據經過:
INDArray inputArray = Nd4j.create(input); // 將整個輸入數組轉換為 INDArray
INDArray accs = inputArray.get(NDArrayIndex.interval(0, imuNum * 3)).reshape(imuNum, 3, 1); // 加速度部分
INDArray oris = inputArray.get(NDArrayIndex.interval(imuNum * 3, input.length)).reshape(imuNum, 3, 3); // 旋轉矩陣部分
后出現數據丟失
oris.get(NDArrayIndex.point(6)): []
oris.get(NDArrayIndex.point(7)): []i = 5
subMatrix rank: 2, shape: [3, 3]
accMatrix rank: 2, shape: [3, 1]
i = 6
subMatrix rank: 0, shape: []
accMatrix rank: 2, shape: [3, 1]
解決
將
INDArray inputArray = Nd4j.create(input); // 將整個輸入數組轉換為 INDArray
INDArray accs = inputArray.get(NDArrayIndex.interval(0, imuNum * 3)).reshape(imuNum, 3, 1); // 加速度部分
INDArray oris = inputArray.get(NDArrayIndex.interval(imuNum * 3, input.length)).reshape(imuNum, 3, 3); // 旋轉矩陣部分
改為
INDArray accRaw = Nd4j.create(Arrays.copyOfRange(input, 0, imuNum * 3));
INDArray accs = accRaw.reshape(1, imuNum, 3); // accs.shape:[1, 8, 3]INDArray oriRaw = Nd4j.create(Arrays.copyOfRange(input, imuNum * 3, input.length));
INDArray oris = oriRaw.reshape(1, imuNum, 3, 3); // oris.shape: [1, 8, 3, 3]