python 在tensorflow Tensor中沿着一维计算max

smtd7mpg  于 2023-01-11  发布在  Python
关注(0)|答案(1)|浏览(135)

我有 [number_of_image,width,height,channel] 形式的tfTensor。channel dim是可选的,可以删除。我想计算每个图像的最大值。它应该尽可能快,应该在张流执行的图形模式下工作。
最大值计算是为了最大化每个图像。我尝试使用tf.reduce_max()axis=0选项,但它给我的Tensor与[width, height, channel]的大小,这是奇怪的。我结束了与unstacking和stacking(代码如下),但我想知道是否有一个更好的和快速的解决方案?

#grad is tensor with form [number_of_image, width, height, channel]
grad_unpack = tf.unstack(grad)
for t in grad_unpack:
    t /= tf.reduce_max(t)    
grad = tf.stack(grad_unpack)

短暂性脑缺血发作

tp5buhyn

tp5buhyn1#

tf.reduce_max(grad, axis=[1, 2, 3])

对于任何秩Tensor,可能更棘手

tf.reduce_max(tf.reshape(grad, shape=[tf.shape(grad)[0], -1]), 1)

相关问题