【问题标题】:tensorflow gather across multiple dimentions跨多个维度的张量流聚集
【发布时间】:2016-06-08 22:42:00
【问题描述】:

gather(params, indices) 执行以下操作

output[i, ..., j, :, ... :] = params[indices[i, ..., j], :, ..., :]

所以如果你有 4 维参数和 2 维索引,你最终会得到 5 维数组

问题是怎么做

output[i, ..., j, :, ... :] = params[indices[i, :], ..., indices[j, :], :, ..., :]

使其充当numpy's

output = params[indices[0], indices[1], .. , :]

(github上的#206票是关于不同的问题:它是关于类似numpy的api,一般不收集)

一种可能的方法是使用gather_nd,但是(据我所知)如果我们想在并非所有维度上使用gather_nd,我们仍然必须为它们创建索引,例如如果我们有 10 维数组 A 并且我们想用 2 维数组 B 索引前两个维度,例如 A[B[0], B[1], :] 我们的索引矩阵必须有 11 列(有 8多余的)。

--- old indices ----       new index
0 0 <all rows of length 8> 0
1 1 <all rows of length 8> 1
...

【问题讨论】:

    标签: python arrays numpy tensorflow


    【解决方案1】:

    @ebrevdo 正在对 #206 进行更新,以推广切片。

    同时,您可以展平您的数组,为您想要的元素构建线性索引,使用聚集,然后重新整形,就像 mrry 在 another answer 中所做的那样。这在效率上可能并不比原生实现差多少

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多