在Tensorflow中将函数元素应用于具有不同参数的张量

时间:2017-01-25 12:25:16

标签: python machine-learning tensorflow

我有一个列表,其中包含常量和变量的混合,这些常量和变量充当我正在尝试优化的函数的输入。这是复杂的部分:我需要将一个函数应用于该列表中的每个元素,每个元素都有不同的参数。我认为必须在计算图中完成这项工作才能有效。

我想做的是将参数放入逐个元素匹配的张量中,并将函数应用于三个张量,以便每行元素一起评估。这可能吗?

示例:

enter image description here

最终会出现类似的结果:

# The list of variables and constants to optimize
optimal = [[tf.constant(10.0), tf.constant(1.0), tf.Variable(0.0)]]

# Parameters
p1 = [[None, None, 2.0]]
p2 = [[None, None, 5.0]]

# Apply the function
# ----------------------- HOW TO DO THIS -----------------------
g = f(optimal, p1, p2)
# --------------------------------------------------------------

# Loss
loss = tf.abs(tf.sub(g, label))

# Optimize
trainstep = tf.train.ProximalGradientDescentOptimizer(.1).minimize(loss, var_list= [optimal[2]])

sess.run(trainstep)

提前非常感谢你。

1 个答案:

答案 0 :(得分:1)

使用tf.map_fn

g = tf.map_fn(f, tf.transpose(tf.concat(0, [optimal, p1, p2])))

首先在dim 0上连接,然后转置它,以便行io_i, p1_i, p2_imap_fn只是将f应用于每一行。