2017-08-06 12 views
1

TensorFlowでGANを開発しています。現在、トレーニングスケジュールはTensorFlowで逐次操作と副作用を組み合わせる方法

feed_dict = ... 
sess.run(discriminator_train_op, feed_dict); 
sess.run(generator_train_op, feed_dict); 
sess.run(generator_train_op, feed_dict); 

です。安定性が向上しているため、各ステップを2回訓練しています。

ここでは、操作をまとめて、Tensorflowでの送りが遅いため、一度ネットワークに給電するだけです。私は1つの操作は、別の後に行われる必要があります指定たぶんcontrol_dependencies

with tf.control_dependencies([discriminator_train_op]): 
    train_op = tf.group(generator_train_op); 
with tf.control_dependencies([train_op]): 
    train_op = tf.group(generator_train_op); 

を試してみました。しかし、プロファイリングのタイムラインは、ジェネレータで実行された特定のグラジェント降下が、ディスクリミネータのグラデーション降下と平行であることを示しています。つまり、注文は強制されません。さらに、ネットワーク内にdebug文を追加することによって、train_opを組み合わせると、ジェネレータのみが2回ではなく1回だけトレーニングされることが分かります。

この一連の操作の制御をPythonからTensorflowに移す方法はありますか?

答えて

0
with tf.control_dependencies([discriminator_train_op]): 
    train_op_g1 = tf.group(generator_train_op); 
with tf.control_dependencies([train_op_g1]): 
    train_op_g2 = tf.group(generator_train_op); 

sess.run([discriminator_train_op, train_op_g1, train_op_g2], feed_dict) 
関連する問題