2016-11-19 44 views
0

要在构建时改变Tensorflow图(不是在运行图时动态显示),我使用条件分支,如下所示。这是用Tensorflow做这件事的正确方法吗?Tensorflow条件图构造

with tf.Graph().as_default()`: 
    ... 
    if a > 1: 
    weightsLayer1 = tf.Variable(tf.truncated_normal([x1,y1]) 
    else: 
    weightsLayer1 = tf.Variable(tf.random_normal([x2,y2]) 

回答

2

是的,你可以使用一般if S,其价值将Python运行过程中进行评估,因此图表中施工时间,并根据该值,那么,你的weightsLayer1将获得该值或其他。

要在图形执行期间执行条件图构造,可以使用tf.cond。你这样使用它:

weightLayer1 = tf.cond(a > 1, lambda: tf.Variable(tf.truncated_normal([x1,y1])), 
           lambda: tf.Variable(tf.random_normal([x2,y2]))) 
1

是的,它是正确的。请注意,只有一个分支将被添加到图中。如果你想在运行时改变,你可以使用tf.condtf.select