我有一个由常量和变量混合组成的列表,它们充当我试图优化的函数的输入。这是复杂的部分:我需要对列表中的每个元素应用一个函数,每个元素都有不同的参数。我相信这必须在计算图中完成才能有效。
我想做的是将参数放入逐个元素匹配的张量中,并将函数应用于三个张量,以便一起评估每行元素。这可能吗?
示例:
最终可能会得到类似的结果:
# 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)
提前非常感谢您。
最佳答案
使用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
应用于每一行。
关于python - 在 Tensorflow 中将函数按元素应用于具有不同参数的张量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41851619/