Python 如何替换tensorflow中张量的维数?
假设我有一个形状为(?,5,1,20)的张量 对于最后一个维度的每次出现,我都会在最后一个维度上进行一些计算(得到k max值),从而产生一个较小的张量b。如果我想用b替换原始张量的最后一个维度,我该怎么办Python 如何替换tensorflow中张量的维数?,python,tensorflow,Python,Tensorflow,假设我有一个形状为(?,5,1,20)的张量 对于最后一个维度的每次出现,我都会在最后一个维度上进行一些计算(得到k max值),从而产生一个较小的张量b。如果我想用b替换原始张量的最后一个维度,我该怎么办 我应该走什么(最好是纯张量流)路径?你在做最后一个维度的计算……如果我理解正确,你想从(?,5,1,20)->(?,5,1,b)开始 什么样的计算 你可以重塑你的张量,进行计算(比如矩阵乘法),然后重塑回来 a = tf.reshape(X, [-1, 20]) a = tf.matmul(
我应该走什么(最好是纯张量流)路径?你在做最后一个维度的计算……如果我理解正确,你想从(?,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]的过滤器对其进行破解。如果我理解正确的话,你想从(?,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]的过滤器对其进行破解。做同样的事情,效率更高