【问题标题】:How to replace a dimension of a tensor in tensorflow?如何替换张量流中张量的维度?
【发布时间】:2017-02-01 22:57:27
【问题描述】:

假设我有一个形状为 (?, 5, 1, 20) 的张量

对于最后一个维度的每次出现,我都会在最后一个维度上进行一些计算(获取 k 最大值),从而产生较小的张量 b。如果想用 b 替换原始张量的最后一维怎么办?

我应该采取什么(最好是纯张量流)路径?

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    您正在对最后一个维度进行一些计算...如果我理解正确,您想从 (?, 5, 1, 20) -> (?, 5, 1, b) 开始?

    什么样的计算?

    您可以重塑您的张量,进行计算(例如矩阵乘法)并重新整形。

    a = tf.reshape(X, [-1, 20])
    a = tf.matmul(a, X)
    a = tf.reshape(a, [-1, b])
    

    或者您可以使用tf.einsum() 来实现类似的壮举。对于非线性计算,取决于您想要做什么。

    编辑: 您也可以使用 Conv2D 并使用大小为 [1,1, 20, b] 的过滤器来破解它。做同样的事情,效率更高

    【讨论】:

      猜你喜欢
      • 2022-09-29
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多