在java nd4j-native-platform版本0.9.1中使用N4DJ
我试图通过仅选择某些行来创建数组的子集。我使用getRows方法执行此操作。
这适用于矩阵,但是当我的矩阵包含单行向量时,我得到不正确的结果,请参见下面的示例,显示调用方法 getRow(int i)与getRows(int...rows)相比如何正常工作:
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 的已知问题还是我误解了什么?
请注意,列向量也会遇到类似的问题。