2

我最近从 numpy 切换到 ND4J,但很难理解 ND4J 中的广播是如何工作的。

假设我有两个 ndarray,形状为 [3,2,4,5] 的 a 和形状为 [2,4,5] 的 b。我想按元素将它们加起来并将 b 广播到 each a[i] for i = 0 to 2。在 numpy 中,它可以简单地通过 来完成a + b,而在 ND4J 中则a.add(b)抛出异常。我试过a.add(b.broadcast(3))了,但还是没有运气。

在 ND4J 中这样做的正确方法是什么?

4

1 回答 1

1

到目前为止我发现的唯一方法如下

var a = Nd4j.createUninitialized(Array(3,2,4,4))
var b = Nd4j.createUninitialized(Array(2,4,4))
b = b.reshape(1,32)
b = b.broadcast(3,32)
b = b.reshape(3, 2, 4, 4)
a.add(b)

请让我知道是否有更好的方法来做到这一点

于 2017-02-18T02:53:50.047 回答