如何在张量流中定义条件语句?

时间:2017-01-22 09:16:12

标签: python if-statement math tensorflow

我在文件fe_extraction.py

中有三个函数
def rms_value(x):
    return tf.sqrt(tf.reduce_mean(tf.square(x)))
def meanabs(x):
    return tf.reduce_mean(tf.abs(x))

def req_value(x,y,Thersh):
    z = tf.cond(y>Thersh,rms_freq(x),peak_value(x))
return z

如果y>我想简单地应用一个条件thershold执行rms_freq(x)或者peak_value(x)并返回该值。  y是从另一个函数获得的值。

# given values
# Thershold = 10.69 
# x is defined as tf.Variable , dtype tf.float64
# y = 45.34 obtained from function
....
z = fe_extraction.req_value(x,y,Thershold)

我得到TypeError错误:fn1必须是可调用的。

1 个答案:

答案 0 :(得分:1)

使用rms_freq(x)peak_value(x)您分别调用函数rms_freqpeak_value,将x作为tf.cond传递给x参数。

相反,你必须传递一个可调用的,或者换句话说,一个lambda可以执行的函数。

由于您希望x作为函数的参数,因此可以将它们包装在z = tf.cond(y>Thersh,lambda: rms_freq(x) ,lambda: peak_value(x)) 中,该{{1}}定义一个可调用对象,该对象捕获外部作用域,从而查看参数{{1}}。

{{1}}