在 java nd4j-native-platform 版本 0.9.1
中使用 N4DJ我试图通过仅选择某些行来创建数组的子集。我使用 getRows 方法执行此操作。
这对于矩阵工作正常,但是当我的矩阵包含单个行向量时,我得到的结果不正确,请参见下面的示例,其中显示了调用方法的方式 与 getRows(int ... rows) 相比, getRow(int i)可以正常工作:
final INDArray singleRowArray = Nd4j.create(new double[]{1,2,3,4},new int[]{1,4});
System.out.println(singleRowArray); //Output: [1.00, 2.00, 3.00, 4.00]
final INDArray getSingleRowArray = singleRowArray.getRow(0);
System.out.println(getSingleRowArray); //Output: [1.00, 2.00, 3.00, 4.00] as expected
final INDArray getSingleRowArrayFromGetRowsSingle = singleRowArray.getRows(0);
System.out.println(getSingleRowArrayFromGetRowsSingle); //Output: [1.00, 0.00, 0.00, 0.00] expected the same as above
当前的解决方法是检查矩阵是否实际上是单个向量,并调用 getRow 而不是 getRows 方法。
这是N4DJ的已知问题,还是我误会了什么?
请注意,列向量也会遇到类似的问题。