使用tensorflow在2D地图上查找局部最小值

时间:2017-04-20 09:57:18

标签: optimization tensorflow deep-learning

我正在尝试使用张量流检测2D图像映射上的局部最小值的位置和值。由于这不是微不足道的,我想知道tf中一个强大而有效的方式是什么?

到目前为止,我想到了使用[-1 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社区中最高的。