2017-04-20 67 views
1

我试图使用tensorflow 2D图像地图上检测位置和局部极小值2D地图上寻找局部极小。既然这不是微不足道的,我想知道tf中强大而有效的方法是什么?使用tensorflow

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

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是迄今为止支持:

+2

我想你忘了问一个问题。 –

回答

3

你可以汇集这样找到当地的最大值。

为什么这样吗?的唯一时间在in_tensor一些指数值是一样的相同的索引在max_pooled_in_tensor的值是如果该值是在in_tensor中心该索引的3×3邻域中的最高的。

+0

我认为这将是更有效的使用'tf.equal'的浮子浇铸版本值例如设置为0。 '最大值= in_tensor * tf.float(tf.equal(in_tensor,max_pooled_in_tensor))' – Multihunter