2016-11-19 6 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

はい、あなたは彼らの値はPythonの実行時に評価されます、通常のif Sを使用するので、グラフ構築時で、その後、値に応じて、あなたの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

はい正しいです。ブランチの1つだけがグラフに追加されることに注意してください。実行時に変更する場合はtf.condまたはtf.selectを使用できます。

関連する問題