我正在寻找一种方法来编写一个带有两个theano表达式a
和b
的函数,并对它们进行元素运算(让我们说加法),以便dimensions(a + b) = dimensions(a) + dimenisons(b)
。< / p>
在我的情况下,a
将有一个维度,b
将有两个或三个。
我正在考虑为二维a.dimshuffle('x', 'x', 0) + a.dimshuffle(0, 1, 'x')
做b
之类的事情,但我不知道如何获得它的维数。 b.shape
是theano表达式,不支持len()
。
此目标的最终目的是计算多个点处折线的距离,此技术将多次使用,其中a
将具有(number_of_control_points,)
形状,b
将为2D或3D网格采样点坐标,我将评估距离。
我可以在不评估表达式的情况下将表达式的维数作为常规python值吗?
替代问题:如果没有明确的dimshuffle,有没有办法直接进行操作?
答案 0 :(得分:1)
使用tile
广告魔术:
import theano as th
import theano.tensor as T
def general_outer(elem_op, a, b):
a_shape = T.shape(a)
b_shape = T.shape(b)
return elem_op(T.tile(a, T.join(0,T.ones_like(a_shape),b_shape), b)) #note the broadcast