我正在尝试使用张量流检测2D图像映射上的局部最小值的位置和值。由于这不是微不足道的,我想知道tf中一个强大而有效的方式是什么?
到目前为止,我想到了使用[-1 1]内核的简单水平和垂直卷积。
答案 0 :(得分:5)
您可以通过以下方式找到本地最大值:
import tensorflow as tf
def get_local_maxima(in_tensor):
max_pooled_in_tensor = tf.nn.pool(in_tensor, window_shape=(3, 3), pooling_type='MAX', padding='SAME')
maxima = tf.where(tf.equal(in_tensor, max_pooled_in_tensor), in_tensor, tf.zeros_like(in_tensor))
return maxima
对于局部最小值,最容易否定输入然后找到最大值,因为对于pooling_type到目前为止仅支持AVG和MAX。
为什么这样做? in_tensor
的某个索引处的值与max_pooled_in_tensor
中相同索引处的值相同的唯一时间是该值是in_tensor
中以该指数为中心的3x3社区中最高的。