【发布时间】:2020-08-21 15:46:14
【问题描述】:
我正在寻找最佳和优化的方法(无循环),以使用 TensorFlow 1.14 根据最大值从 3D 张量获取 2D 最大张量。假设我们有这个张量和这个函数(为了理解-它不起作用-):
def get_Max(inputs):
max_indices = [0,0,0]
for i in range(16):
for j in range(2048):
for k in range(10):
if(inputs[max_indices[0],max_indices[1],max_indices[2]]<inputs[i,j,k]):
max_indices = [i,j,k]
return inputs[:][j]
inputs = tf.random.uniform(shape=[16,2048,10],dtype=tf.dtypes.float32)
output = get_Max(inputs)
因此,输出张量的形状必须为 [16,10],即 2048 的 16 个最大值。 那么,如何实现一个没有循环的函数呢?
我使用了tf.math.reduce_max,但这不是我想要的,因为它在下图中很清楚:
【问题讨论】:
-
可能是
tf.math.reduce_max(inputs)?或者argmax如果您还需要索引? -
但是如何返回一个 [16,10] 张量?
-
你也可以指定一个轴来循环,所以不是在所有维度上找到最大值,而是在那个维度上循环然后丢弃它。
-
我的意思是,
tf.math.reduce_max(inputs, axis=1) -
我知道将这些索引传递给输入并获得形状为 [16,10] 的输入
标签: python tensorflow tensorflow2.0 tensorflow-serving