运行时Tensorflow占位符决策

时间:2017-08-24 00:46:06

标签: python machine-learning tensorflow tensorflow-gpu

我有3个张量流占位符,它们应该在运行时提供我的机器学习模型(数据可以在任何占位符中随机发送)。所以我写了一个x和模型的通用代码。

x1 = tf.placeholder(tf.float32, [batch_size, data_image_size ], name='input1')
x2 = tf.placeholder(tf.float32, [batch_size, data_image_size ], name='input2')
x3 = tf.placeholder(tf.float32, [batch_size, data_image_size ], name='input3')
output = model.finalize(x, reuse=True)

现在,在运行时,我会生成一个随机数(在1,2,3之间)并想要决定哪个占位符适合 x 。有什么办法吗?

逻辑上这对我来说很有意义,

def f1(): return x1  #(similarly for x2 and x3)

turn_1= tf.constant(1)
turn_2= tf.constant(2)
turn_3= tf.constant(3)

x = tf.case({tf.equal(turn, turn_1): f1, tf.equal(turn , turn_2): f2 ,
        tf.equal(turn, turn_3): f3 }, default=f1, exclusive=True)

output = model.finalize(x, reuse=True)

sess.run(output , dict_feed = {turn: 1 , x1 : X_input_data} )
sess.run(output , dict_feed = {turn: 3 , x3 : X_input_data} )
sess.run(output , dict_feed = {turn: 2 , x2 : X_input_data} )

但是这给了我错误: ValueError:操作'case_3 / If_3 / Merge'被标记为不可获取。

有任何建议甚至可以做到吗?或者我应该用不同的变量名称对所有情况进行硬编码?

[请注意:我需要分享权重]

0 个答案:

没有答案