在theano中的操作总是增加尺寸

时间:2016-10-30 12:03:23

标签: python theano

我正在寻找一种方法来编写一个带有两个theano表达式ab的函数,并对它们进行元素运算(让我们说加法),以便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,有没有办法直接进行操作?

1 个答案:

答案 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