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

oeb*_*oeb 2 optimization deep-learning tensorflow

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

到目前为止,我想到了使用[-1 1]内核的简单水平和垂直卷积.

小智 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
Run Code Online (Sandbox Code Playgroud)

对于局部最小值,最容易否定输入然后找到最大值,因为对于pooling_type到目前为止仅支持AVG和MAX.

为什么这样做?某个指数in_tensor的值与同一指数中的值相同的唯一时间max_pooled_in_tensor是该值是以该指数为中心的3x3邻域中的最高值in_tensor.