python - How to apply interp1d to each element of a tensor in Tensorflow -


let say, have interpolation function.

def mymap():     x = np.arange(256)     y = np.random.rand(x.size)*255.0     return interp1d(x, y) 

this guy maps number in [0,255] number following profile given x , y (now y random, though). when following, each value in image gets mapped nicely.

x = imread('...') x_ = mymap()(x) 

however, how can in tensorflow? want like

img = tf.placeholder(tf.float32, [64, 64, 1], name="img") distorted_image = tf.map_fn(mymap(), img) 

but results in error saying

valueerror: setting array element sequence.

for information, checked if function map simple below, works well

mymap2 = lambda x: x+10 distorted_image = tf.map_fn(mymap2, img) 

how can map each number in tensor? help?

the function input of tf.map_fn needs function written tensorflow ops. instance, 1 work:

def this_will_work(x):     return tf.square(x)  img = tf.placeholder(tf.float32, [64, 64, 1]) res = tf.map_fn(this_will_work, img) 

this 1 not work:

def this_will_not_work(x):     return np.sinh(x)  img = tf.placeholder(tf.float32, [64, 64, 1]) res = tf.map_fn(this_will_not_work, img) 

because np.sinh cannot applied tensorflow tensor (np.sinh(tf.constant(1)) returns error).


solutions

you can write interpolation function in tensorflow, , maybe ask in stackoverflow question.

if absolutely want use scipy.interpolate.interp1d, need keep code encapsulated in python. that, can use tf.py_func, , use scipy function inside.


Comments

Popular posts from this blog

javascript - Slick Slider width recalculation -

jsf - PrimeFaces Datatable - What is f:facet actually doing? -

angular2 services - Angular 2 RC 4 Http post not firing -