我最近从numpy切换到ND4J,但很难理解ND4J中的广播是如何工作的。
假设我有两个ndarray,一个形状[3,2,4,5]和形状[2,4,5]的b。我想以元素方式添加它们并向每个a[i] for i = 0 to 2
广播b。在numpy中,它可以通过a + b
完成,而在ND4J中a.add(b)
会抛出异常。我试过a.add(b.broadcast(3))
,但仍然没有运气。
在ND4J中执行此操作的正确方法是什么?
答案 0 :(得分:0)
到目前为止我找到的唯一方法如下
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)
如果有更好的方法,请告诉我