我正在计算一组数据中的一些功能。我为每个计算做了功能。我想将所有这些值放在另一个函数的数组中,我想调用该函数。怎么做?
我拥有的3个功能
def peak_value(x):
return tf.reduce_max(tf.abs(x))
def rootms(x):
return tf.sqrt(tf.reduce_mean(tf.square(x)))
def meanofabs(x):
return tf.reduce_mean(tf.abs(x))
我希望将这些值分配给函数
中的数组def pooldata(x,size):
pool = tf.zeros([1,size],tf.float32)
# i want to
# assign pool[0] with peak_value(x)
# assign pool[1] with rootms(x)
# assign pool[2] with meanofabs(x)
return pool
然后我想调用函数
# define x, size
model = tf.intialize_all_variables()
sess = tf.Session()
sess.run(model)
print(sess.run(pooldata)) # print all the three values
我该怎么办?
我试过
tf.assign(pool[0],peak_value(x))
但它给了我错误
TypeError: Input 'ref' of 'Assign' Op requires l-value input
答案 0 :(得分:4)
tf.assign
只允许您为整个变量赋值,而不是为变量的片段赋值。您必须使用tf.scatter_update
来分配变量的片段。但是,在您的情况下,您可以通过连接三个值来创建pool
张量。这是完整的工作计划:
import tensorflow as tf
def peak_value(x):
return tf.reduce_max(tf.abs(x))
def rootms(x):
return tf.sqrt(tf.reduce_mean(tf.square(x)))
def meanofabs(x):
return tf.reduce_mean(tf.abs(x))
def pooldata(x,size):
pool = tf.concat_v2([tf.expand_dims(peak_value(x), 0),
tf.expand_dims(rootms(x), 0),
tf.expand_dims(meanofabs(x), 0)], axis=0)
# i want to
# assign pool[0] with peak_value(x)
# assign pool[1] with rootms(x)
# assign pool[2] with meanofabs(x)
return pool
sess = tf.Session()
size = 1
x = [1.0]
print(sess.run(pooldata(x, size)))