2016-07-17 6 views
3

Tensorflowのテンソルの各要素に1Dのインタープリートを適用したいと思います。Tensorflowで要素1次元補間を実装する方法は?

たとえば、行列の場合、interp1dを使用できます。

from scipy.interpolate import interp1d 
q = np.array([[2, 3], [5, 6]]) # query 
x = [1, 3, 5, 7, 9]    # profile x 
y = [3, 4, 5, 6, 7]    # profile y 
fn = interp1d(x, y) 
# fn(q) == [[ 3.5, 4.], [5., 5.5]] 

我々はテンソルqを持っている場合は、

q = tf.placeholder(shape=[2,2], dtype=tf.float32) 

はどうすれば同等の要素単位1D補間を持つことができますか? 助けてもらえますか?

答えて

0

私はこのためにラッパーを使用しています:

import numpy as np 
import tensorflow as tf 
from scipy.interpolate import interp1d 


x = [1, 3, 5, 7, 9] 
y = [3, 4, 5, 6, 7] 
intFn = interp1d(x, y) 

def fn(m): 
    return intFn(m).astype(np.float32) 

q = tf.placeholder(shape=[2,2], dtype=tf.float32) 
q1 = np.array([[2, 3], [5, 6]]).astype(np.float32) 

f1 = tf.py_func(fn, [q], tf.float32) 

with tf.Session() as sess: 
    init = tf.global_variables_initializer() 
    sess.run(init) 
    result = sess.run(f1, feed_dict={q:q1}) 

print(result) 

ない最適なソリューションを。そのテンソルの流れがnumpyとscipyの中でより多くの機能を実装することを望む...

関連する問題