Java 是否有一个INDArray';s执行两个INDARY(大小不同)相加的方法?

Java 是否有一个INDArray';s执行两个INDARY(大小不同)相加的方法?,java,nd4j,Java,Nd4j,设想两个阵列: a1.shape()=[2,3],a1中满是1 a2.shape()=[1,2],a2中满是2 我想在它们之间执行一个加法,例如: ?> result = a1.add(0, a2) ?> print(result) [[3, 3, 1], [1, 1, 1]] ?> result = a1.add(1, a2) ?> print(result) [[1, 1, 1], [3, 3, 1]] ?> result = a1.add(1, 1, a2

设想两个阵列:

  • a1.shape()=[2,3],a1中满是1

  • a2.shape()=[1,2],a2中满是2

我想在它们之间执行一个加法,例如:

?> result = a1.add(0, a2)
?> print(result)
[[3, 3, 1], [1, 1, 1]]
?> result = a1.add(1, a2)
?> print(result)
[[1, 1, 1], [3, 3, 1]]
?> result = a1.add(1, 1, a2)
?> print(result)
[[1, 1, 1], [1, 3, 3]]
我已尝试首先选择一个子数组:

?> subarray = a1.get(NDArrayIndex.interval(0, 1), NDArrayIndex.interval(0, 2))
?> print(subarray)
[1, 1]
执行添加操作:

?> subarray = subarray.add(a2)
?> print(subarray)
[3, 3]
但我不知道如何在“a1”中的好位置插入“子阵列”


注:为了便于解释,我简化了问题。正在处理的阵列是4D阵列。

我刚刚在文档中找到以下函数:

INDArray put(INDArrayIndex[] indices, INDArray element)
这可用于解决以下问题:

a1.put(
  new INDArrayIndex[] {NDArrayIndex.interval(0, 1), NDArrayIndex.interval(0, 2)},
  subarray
);
实际上,NDArrayIndex实现了INDArrayIndex接口