私はKerasでGANを訓練したいと思います。私の最終目標はBEGANですが、私は最も簡単なものから始めます。 を理解するにはのウェイトを適切に固定する必要があります。それが私が苦労していることです。Kerasでモデルをコンパイルした後に動的に凍結する方法は?
発電機の訓練時間中、弁別器の重量が更新されないことがあります。 フリーズとフリーダイヤル交互に訓練ジェネレータとdiscriminatorのためのdiscriminatorをしたいと思います。問題は、trainableパラメータをディスクリミネータモデルモデルまたはfalseのfalseに設定することです。つまり、そのウェイトはトレーニングするモデル(および更新するウェイト)を停止しません。一方、をtrainableに設定してモデルをコンパイルすると、はFalseになり、重みはになります。になります。私は、各反復後にモデルをコンパイルすることはできません。それは、全体のトレーニングという考えを否定するからです。
この問題のために、多くのKerasの実装が盗まれているか、古いバージョンなどの直感的ではないトリックのために動作しているようです。
'tf.stop_gradient'はグラデーションの流れを止めています。これは達成したいものではありません。グラデーションフローを作成し、ウェイトのグラデーションを計算したいが、更新操作は実行しない。 –
次に、いつでも重みをフリーズ/フリーズ解除するのではなく、更新したい変数のリストを明示的にテンソルフロー更新オペレーションに渡す方が良いかもしれません。 –
あなたは正しいですが、それはTensorflowの解決策であり、Kerasはそれを許可していません。あなたはモデル抽象化を持ち、主に 'fit'メソッドと' train_on_batch'メソッドを持っています。それだけです。純粋なケラスに解決策がない場合は、私はTensorflowに切り替えます。 –