Nd4j 置换不置换 - 我做错了什么?
Nd4j permute does not permute - what have I done wrong?
我正在尝试按照 documentation (actual a link to mathworks) 中的描述排列数组。
但是我的代码没有重现结果。实际上,我的代码似乎什么也没做:
INDArray foobar = Nd4j.linspace(0, 2, 3);
System.out.println("foobar = " + foobar);
System.out.println("foobar.permute(2, 1, 0) = " + foobar.permute(2, 1, 0));
foobar
和 foobar.permute
的输出相同。
我哪里搞砸了?
可选:任何关于置换如何(语法方面)使用更高维度(如 2d 或 3d 矩阵)的信息将不胜感激。
根据您链接到的文档,置换方法用于置换 multi-dimensional 数组的维度。 Nd4j.linspace 创建一个向量(一维数组)。由于只有一个维度,因此没有其他维度可以用来排列它。另一方面,Mathworks 上的示例创建了一个 3 维数组并排列了第 1 维和第 3 维。
听起来您的意图是排列数组的各个元素(而不是整个维度)。我还没有在 Nd4j 中看到这种方法。
我遇到了同样的问题。我认为 Nd4j 内部没有方法。
我写了一个方法来重新排序 ND4j 向量。
publin INDArray reorder(int[] index) {
INDArray copy = q.dup();
for (int i=0; i<copy.length(); i++){
copy.put(i, q.getScalar(index[i]));
}
return copy;
}
我正在尝试按照 documentation (actual a link to mathworks) 中的描述排列数组。
但是我的代码没有重现结果。实际上,我的代码似乎什么也没做:
INDArray foobar = Nd4j.linspace(0, 2, 3);
System.out.println("foobar = " + foobar);
System.out.println("foobar.permute(2, 1, 0) = " + foobar.permute(2, 1, 0));
foobar
和 foobar.permute
的输出相同。
我哪里搞砸了?
可选:任何关于置换如何(语法方面)使用更高维度(如 2d 或 3d 矩阵)的信息将不胜感激。
根据您链接到的文档,置换方法用于置换 multi-dimensional 数组的维度。 Nd4j.linspace 创建一个向量(一维数组)。由于只有一个维度,因此没有其他维度可以用来排列它。另一方面,Mathworks 上的示例创建了一个 3 维数组并排列了第 1 维和第 3 维。
听起来您的意图是排列数组的各个元素(而不是整个维度)。我还没有在 Nd4j 中看到这种方法。
我遇到了同样的问题。我认为 Nd4j 内部没有方法。 我写了一个方法来重新排序 ND4j 向量。
publin INDArray reorder(int[] index) {
INDArray copy = q.dup();
for (int i=0; i<copy.length(); i++){
copy.put(i, q.getScalar(index[i]));
}
return copy;
}