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に移す方法はありますか?