【发布时间】:2017-02-01 22:57:27
【问题描述】:
假设我有一个形状为 (?, 5, 1, 20) 的张量
对于最后一个维度的每次出现,我都会在最后一个维度上进行一些计算(获取 k 最大值),从而产生较小的张量 b。如果想用 b 替换原始张量的最后一维怎么办?
我应该采取什么(最好是纯张量流)路径?
【问题讨论】:
标签: python tensorflow
假设我有一个形状为 (?, 5, 1, 20) 的张量
对于最后一个维度的每次出现,我都会在最后一个维度上进行一些计算(获取 k 最大值),从而产生较小的张量 b。如果想用 b 替换原始张量的最后一维怎么办?
我应该采取什么(最好是纯张量流)路径?
【问题讨论】:
标签: python tensorflow
您正在对最后一个维度进行一些计算...如果我理解正确,您想从 (?, 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] 的过滤器来破解它。做同样的事情,效率更高
【讨论】: