【问题标题】:Operation in theano that always adds dimensionsTheano 中的操作总是增加维度
【发布时间】:2016-10-30 12:03:22
【问题描述】:

我正在寻找一种方法来编写一个函数,该函数采用两个 theano 表达式 ab 并对它们进行元素操作(比如说加法),以便 dimensions(a + b) = dimensions(a) + dimenisons(b)

在我的情况下,a 将有一个维度,b 将有两个或三个。

我正在考虑为二维b 做类似a.dimshuffle('x', 'x', 0) + a.dimshuffle(0, 1, 'x') 的事情,但我不知道如何获得它的维数。 b.shape 是 theano 表达式,不支持 len()

这样做的最终目标是在多个点计算与折线的距离,该技术将被多次使用,其中a 将具有形状(number_of_control_points,)b 将是2D 或3D 网格采样点坐标我将评估距离。

我可以在不评估表达式的情况下将表达式的维数作为常规 python 值获取吗?

替代问题:有没有办法直接进行操作而无需显式dimshuffle?

【问题讨论】:

    标签: python theano


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2016-04-07
      • 1970-01-01
      • 1970-01-01
      • 2020-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-19
      • 2021-11-29
      相关资源
      最近更新 更多