問題タブ [dcgan]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1519 参照

tensorflow - TensorFlow MNIST DCGAN:損失関数の設定方法は?

TensorFlow でMNIST用の DCGAN を自分で構築したいと考えています。ただし、ジェネレーターの損失関数を設定する方法を見つけるのに苦労しています。Keras DCGAN の実装では、著者はこの問題に対して少しの「回避策」を使用しました。単純に 3 つのモデルを構築しました。ジェネレーター (G)、ディスクリミネーター (D)、そして 3 番目のモデルで、G と D を組み合わせ、そこで D の train-ability を false に設定しました。

このようにして、実際の画像と生成された画像を D に供給して D をトレーニングし、G+D を組み合わせたモデルをトレーニングできます。これは、D が G+D を組み合わせたモデルではトレーニングできないため、D の損失が G に伝播されるためです。

TensorFlow では、既に G と D を構築しています。実際の MNIST トレーニング画像のバッチと生成された画像を組み合わせてトレーニング op ​​を呼び出すだけなので、トレーニング D は比較的単純です。

この例のトレーニング op ​​はバイナリクロス エントロピーです。

...しかし、「G と D」を単一の 3 番目のモデルに組み合わせた「スタック」モデルがない場合、G の損失関数をどのように設定すればよいでしょうか?

Gで画像のバッチを生成し、それらをDにフィードする必要があることを知っています.Dの損失を取得できます...ただし、Gの出力は形状(batch_size, 28, 28, 1)です。G の損失関数を手動で設定するにはどうすればよいですか?

このための「G と D」を組み合わせたモデル「回避策」がなければ、出力形状を持つ D の損失を(batch_size, 1)G の出力層に伝播する必要があります。

たとえば、Gが何らかの分類を行う場合、これを理解するのはそれほど難しくありません...しかし、Gは画像を出力します。したがって、D の損失を G の出力層に直接マッピングすることはできません。

G+D を組み合わせた 3 番目のモデルをセットアップする必要がありますか? または、G の損失を手で計算する方法はありますか?

どんな助けでも大歓迎です:)

0 投票する
1 に答える
309 参照

cntk - CNTK ImageDeserializer と DCGAN のサンプル

このサンプル https://github.com/Microsoft/CNTK/blob/master/Tutorials/CNTK_206B_DCGAN.ipynbを作り直して、png MNIST ファイル (チュートリアルで使用するフラットな 1d 配列画像入力ではなく) を操作します。ImageDeserializer (およびデータをロードするためのマップ ファイル) を使用します。

28x28 画像 (およびジェネレーターの出力) を期待するように、ディスクリミネーターの入力出力を変更しました。こちらのコードを参照してください: https://github.com/olgaliak/cntk-cyclegan/blob/master/trainDCGan.py

問題は、trainDCGan.py が現在ノイズを生成していることです。あなたの助けに感謝!

0 投票する
0 に答える
732 参照

python - GAN ジェネレーターが望ましい結果を生成しない

私はテンソルフローに少し慣れていないので、問題が明らかな場合はご容赦ください。基本的に、私は敵対的生成ネットワークを作成しており、ジェネレーターは非常に反復的なタイルのようなパターンを生成します。現時点では、私の発電機モデルは次のようになっています

高密度ブロックは次のもので構成されます。

deconv ブロックは次のようになります。

重みとバイアスの作成は次のとおりです。

損失関数とオプティマイザは次のとおりです。

で定義されているように、グラフ「G」のすべてのパラメーターをトレーニングしています。

これは正しい数の変数を返すようです。ネットワークには、サイズ (batch_size、100) のテンソルが供給されます。これは、拡大された mnist データ (64x64 に拡大) に似ているはずです。エラーから気付いたのは、ジェネレーターは、いくつかのエポックとフラットラインの損失に関してのみ改善されるということです。ディスクリミネーターが 50 エポックごとにしか更新されない場合でも、ジェネレーターは約 150 エポック後に改善されません。

出力例は次のようになります: Epoch 500

また、弁別器が正しく機能することにも注意してください。mnist の分類 CNN であるディスクリミネータから始めて、GAN で使用するために、基本的にすべての出力を 1 つのノードにマージしました。

他の出力も同様のタイリング パターンに従いますが、その理由はわかりません。誰かがそれを助けることができれば、それは素晴らしいことです! さらに情報が必要な場合は、お知らせください。

0 投票する
1 に答える
339 参照

machine-learning - GAN が入力サイズを変更するとエラーが発生する

以下のコードは 32*32 の入力のみを受け取ります。コードはチュートリアルからのものです - https://github.com/awjuliani/TF-Tutorials/blob/master/DCGAN.ipynb

デフジェネレーター(z):

def discriminator(下、reuse=False):

以下は、128*128 の画像をフィードしたときに発生するエラーです。