我有一个列表,其中包含常量和变量的混合,这些常量和变量充当我正在尝试优化的函数的输入。这是复杂的部分:我需要将一个函数应用于该列表中的每个元素,每个元素都有不同的参数。我认为必须在计算图中完成这项工作才能有效。
我想做的是将参数放入逐个元素匹配的张量中,并将函数应用于三个张量,以便每行元素一起评估。这可能吗?
示例:
最终会出现类似的结果:
# 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)
提前非常感谢你。
答案 0 :(得分:1)
使用tf.map_fn。
g = tf.map_fn(f, tf.transpose(tf.concat(0, [optimal, p1, p2])))
首先在dim 0
上连接,然后转置它,以便行i
为o_i, p1_i, p2_i
。 map_fn
只是将f
应用于每一行。