是否有 INDArray 的方法来执行两个 INDArray (具有不同大小)的加法?
Is there an INDArray's method to perform an addition of two INDArray (with different size)?
假设有两个 INDArray:
a1.shape() = [2, 3] 且a1满1;
a2.shape() = [1, 2] and 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]]
我试过先select一个子数组:
?> subarray = a1.get(NDArrayIndex.interval(0, 1), NDArrayIndex.interval(0, 2))
?> print(subarray)
[1, 1]
执行加法:
?> subarray = subarray.add(a2)
?> print(subarray)
[3, 3]
但我不知道如何在合适的位置将 'subarray' 插入 'a1'...
注意:为了便于说明,我简化了问题。正在处理的数组是 4 维数组。
我刚刚在文档中找到了以下功能:
INDArray put(INDArrayIndex[] indices, INDArray element)
这可以用来解决这个问题:
a1.put(
new INDArrayIndex[] {NDArrayIndex.interval(0, 1), NDArrayIndex.interval(0, 2)},
subarray
);
确实 NDArrayIndex 实现了 INDArrayIndex 接口。
假设有两个 INDArray:
a1.shape() = [2, 3] 且a1满1;
a2.shape() = [1, 2] and 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]]
我试过先select一个子数组:
?> subarray = a1.get(NDArrayIndex.interval(0, 1), NDArrayIndex.interval(0, 2))
?> print(subarray)
[1, 1]
执行加法:
?> subarray = subarray.add(a2)
?> print(subarray)
[3, 3]
但我不知道如何在合适的位置将 'subarray' 插入 'a1'...
注意:为了便于说明,我简化了问题。正在处理的数组是 4 维数组。
我刚刚在文档中找到了以下功能:
INDArray put(INDArrayIndex[] indices, INDArray element)
这可以用来解决这个问题:
a1.put(
new INDArrayIndex[] {NDArrayIndex.interval(0, 1), NDArrayIndex.interval(0, 2)},
subarray
);
确实 NDArrayIndex 实现了 INDArrayIndex 接口。