Какова точная спецификация `broadcast` в ND4j / DL4j? - PullRequest
0 голосов
/ 10 февраля 2020

Каково точное определение INDArray.broadcast(long...) в ND4j?

Описание обоих методов гласит только «Передает этот ndarray, чтобы быть указанной формой», и не объясняет требования для приемлемых форм, которые должны быть широковещание.

Следующий код (предназначенный для трансляции ndarray в форме дополнительного первого измерения длины 3) не работает:

INDArray array = Nd4j.create(new double[] {1.,2.,3.,4.}, new int[] {2,2}, 'c');
System.out.println("array: " + array);
System.out.println("array.broadcast(3,2,2): " + array.broadcast(3,2,2));

Я ранее пытался транслировать массив форма (4) до (3,4), и это сработало. Я попытался (2,2) до (2,2,3) и получил ошибку о несовместимых формах. В (2,2) до (3,2,2) выше я не получаю сообщение о несовместимых формах, поэтому я предполагаю, что они совместимы, и это должно работать, но я получаю следующую ошибку:

Error at [D:/jenkins/ws/dl4j-deeplearning4j-1.0.0-beta4-windows-x86_64-cpu/libnd4j/include/ops/declarable/generic/transforms/tile.cpp:83:0]:
TILE op: this op requires repeats vector, either as IArgs or second array with length equal to rank of input array to be tiled !
Exception in thread "main" java.lang.RuntimeException: Op [tile] execution failed
    at org.nd4j.linalg.cpu.nativecpu.ops.NativeOpExecutioner.exec(NativeOpExecutioner.java:1645)
    at org.nd4j.linalg.api.ops.executioner.DefaultOpExecutioner.execAndReturn(DefaultOpExecutioner.java:714)
    at org.nd4j.linalg.api.ndarray.BaseNDArray.broadcast(BaseNDArray.java:5451)
    at org.nd4j.linalg.api.ndarray.BaseNDArray.broadcast(BaseNDArray.java:5465)
    at com.sri.ai.praise.core.representation.interfacebased.factor.core.table.NDArraySandbox.main(NDArraySandbox.java:21)
Caused by: java.lang.RuntimeException: Op validation failed
    at org.nd4j.nativeblas.Nd4jCpu$NativeOps.execCustomOp(Native Method)
    at org.nd4j.linalg.cpu.nativecpu.ops.NativeOpExecutioner.exec(NativeOpExecutioner.java:2045)
    at org.nd4j.linalg.cpu.nativecpu.ops.NativeOpExecutioner.exec(NativeOpExecutioner.java:1637)
    ... 4 more
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...