WOLFRAM

NetGANOperator[{generator,discriminator}]

生成ネット gen と分類ネット discriminator で生成的な敵対的ネットワーク(generative adversarial network, GAN)の訓練を行うネットワークを表す.

NetGANOperator[{generator,discriminator},loss]

使用する損失タイプを指定する.

詳細とオプション

  • NetGANOperatorを使ってさまざまなデータタイプについて生成的なモデルが訓練できる.
  • NetGANOperator[]の訓練中,生成器と識別器は互いにゼロサムゲームを行う.生成器は識別器をだまそうとし,識別器は生成されたデータと実際のデータを区別しようとする.
  • NetGANOperator[{generator,discriminator},]generatordiscriminator は厳密に1つの入力を取り,厳密に1つの出力を作成する.加えて,generatordiscriminator の入力と同じ形式の出力を生成し,discriminator はスカラー数を出力する.
  • 次は,NetGANOperator[]の入力ポートである.
  • "Sample"識別器が高いスコアを付けなければならない実際のサンプル
    "Latent"偽のサンプルを生成するための生成器へのシード入力
  • 次は出力ポートである.
  • "LossReal"実際のサンプルについての識別器の損失
    "LossFake"偽のサンプルについての識別器の損失
    "GeneratedFake"生成された偽のサンプル
  • NetGANOperatorは次のアーキテクチャを実装する.
  • NetTrainは,NetGANOperator[]の訓練中に識別器のために自動的に損失"LossReal""LossFake"の和を最小化する.NetTrainが生成器の作るデータに対する"LossFake"を最大にするように,識別器から得られる"LossFake"の勾配は符号を逆にして生成器の訓練に用いられる.
  • 通常,識別器と生成器が同時に更新されないようにするためにTrainingUpdateScheduleNetTrain内で使われる.TrainingUpdateScheduleは生成器よりも頻繁に識別器を更新するために使うこともできる.
  • NetGANOperator[,loss]loss の可能な値には以下がある.
  • Automatic識別器の出力層に依存する自動損失
    "JensenShannon"Jensen-Shannon発散
    "Wasserstein"Wasserstein-GANで使用されるアースムーバー距離の近似
  • "JensenShannon"の場合,損失は以下で与えられる.
  • "LossReal"-Log[discriminator[sample]]
    "LossFake"-Log[1-discriminator[generator[latent]]
  • "Wasserstein"の場合,損失は以下で与えられる.
  • "LossReal"-discriminator[sample]
    "LossFake"discriminator[generator[latent]]
  • 次の訓練パラメータを含めることができる.
  • LearningRateMultipliersAutomaticネットの中の訓練可能な配列の学習率乗数
  • Options[NetGANOperator]は層を構築する際のデフォルトオプションのリストを与える.Options[NetGANOperator[]]はデータについてネットワークを評価する際のデフォルトオプションのリストを与える.
  • Information[NetGANOperator[]]はネットワークについてのレポートを与える.
  • Information[NetGANOperator[],prop]は,NetGANOperator[]の特性 prop の値を与える.使用可能な特性NetGraphと同じである.

例題

すべて開くすべて閉じる

  (1)基本的な使用例

数を生成するためにNetGANOperatorを定義する:

Out[1]=1

生成器と識別器を交互に更新してネットワークを訓練する:

Out[2]=2

生成器を抽出する:

Out[3]=3

いくつかの数を生成し,分布を可視化する:

Out[4]=4

アプリケーション  (4)この関数で解くことのできる問題の例

一次元分布からのサンプル  (1)

ターゲット分布を取る:

分布からどのようにサンプルを取るかを定義する:

ランダムなサンプルの分布とヒストグラムをプロットする:

Out[4]=4

スカラー値の生成器を定義する:

Out[5]=5

与えられたスカラーのスコアを出力する識別器を定義する:

Out[6]=6

生成器と識別器を埋め込んで両者を敵対的な態度で訓練するNetGANOperatorを作成する:

Out[7]=7

潜在確率変数とサンプルとして取られた実際のデータを与えるデータ生成器を作成する:

このデータ生成器からサンプルを得る:

Out[9]=9

NetGANOperatorの訓練をモニターするために,生成されたサンプルをモニターする関数を作ると役に立つだろう:

NetGANOperatorのランダムな初期化についてのモニタリングをチェックする:

Out[11]=11

この図では,緑の曲線がターゲット分布,赤い曲線が識別関数で,オレンジ色のヒストグラムは生成されたフェイクの数の分布を表している.

生成的敵対的ネットワーク(Generative Adversarial Network)を,動作をライブでモニターしながら訓練する:

Out[12]=12

訓練されたモデルの生成をモニターする:

Out[13]=13

数を生成しヒストグラムをプロットする:

Out[14]=14
Out[15]=15

二次元分布からのサンプル  (1)

ターゲットの二次元分布を取る:

分布をプロットする:

Out[2]=2

数のペアの生成器を定義する:

Out[3]=3

与えられた数のペアに対してスコアを出力する識別器を定義する:

Out[4]=4

生成器と識別器を埋め込んで,それらを敵対的態度で訓練するNetGANOperatorを作成する:

Out[5]=5

あるデータの損失と生成された点のペアを計算する:

Out[6]=6

NetGANOperatorの生成器と識別器の動作を可視化する関数を書く:

ランダムな初期化を使って生成されたサンプルもランダムである:

Out[8]=8

NetGANOperatorを訓練する:

Out[9]=9

訓練後に生成されたサンプルは,ターゲットの分布によりよくフィットする:

Out[10]=10

画像と数字の生成  (1)

MNISTデータ集合の画像を取り出す:

Out[1]=1

画像のためのバイナリ識別器を定義する:

Out[2]=2

同じ大きさの画像の生成器を定義する:

Out[3]=3

ランダムなシードとサンプルとして取られた数字の画像を与えるデータ生成器を定義する:

Out[5]=5

生成された画像がどのくらいよいかをモニターする関数を定義する:

この関数をランダムに初期化されたNetGANOperatorで試す:

Out[7]=7

画像を生成するようにNetGANOperatorを訓練する.生成された画像は訓練過程を通してモニターする:

Out[8]=8
Out[9]=9
Out[9]=9

訓練されたNetGANOperatorから生成器を抽出し,これを使って新たな数字の画像を生成する:

Out[10]=10
Out[12]=12

数字を別のCycle-GANに変換する  (1)

異なる2つの数字の画像を取得する:

いくつかのランダムな画像をサンプルに取る:

Out[2]=2
Out[2]=2

訓練済みの画像分類器を取り出す:

Out[3]=3

この訓練済みの分類器からバイナリ識別器を定義する:

Out[4]=4
Out[5]=5

画像を取り込んで同じ形の別の画像を生成する生成器を定義する:

Out[6]=6

NetGANOperatorの2つの例と共有生成器を使ってCycle-GANアーキテクチャを定義し,サイクル一貫性の損失を敵対的損失に加える:

Out[7]=7

生成された画像を可視化する関数を定義する:

ランダムな初期化で生成された画像を見る:

Out[9]=9

Cycle-GANを訓練する:

Out[10]=10
Out[11]=11
Out[12]=12

特性と関係  (1)この関数の特性および他の関数との関係

いくつかの生成器と識別器および対応するNetGANOperatorについて考える:

Out[1]=1
Out[2]=2
Out[3]=3

NetGANOperator内の生成器は識別器から逆勾配を受け取る.

NetGANOperatorが生成器の前後の層なしで単独で訓練されるなら,それは負の学習率乗数を使うことに等しい:

Out[4]=4

NetGANOperatorを訓練することは次のNetGraphを訓練することに等しい:

Out[5]=5

それは,識別器が2ヶ所で共有されている次のNetGraphにも等しい:

Out[6]=6
Wolfram Research (2020), NetGANOperator, Wolfram言語関数, https://reference.wolfram.com/language/ref/NetGANOperator.html.
Wolfram Research (2020), NetGANOperator, Wolfram言語関数, https://reference.wolfram.com/language/ref/NetGANOperator.html.

テキスト

Wolfram Research (2020), NetGANOperator, Wolfram言語関数, https://reference.wolfram.com/language/ref/NetGANOperator.html.

Wolfram Research (2020), NetGANOperator, Wolfram言語関数, https://reference.wolfram.com/language/ref/NetGANOperator.html.

CMS

Wolfram Language. 2020. "NetGANOperator." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/NetGANOperator.html.

Wolfram Language. 2020. "NetGANOperator." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/NetGANOperator.html.

APA

Wolfram Language. (2020). NetGANOperator. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/NetGANOperator.html

Wolfram Language. (2020). NetGANOperator. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/NetGANOperator.html

BibTeX

@misc{reference.wolfram_2025_netganoperator, author="Wolfram Research", title="{NetGANOperator}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/NetGANOperator.html}", note=[Accessed: 30-March-2025 ]}

@misc{reference.wolfram_2025_netganoperator, author="Wolfram Research", title="{NetGANOperator}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/NetGANOperator.html}", note=[Accessed: 30-March-2025 ]}

BibLaTeX

@online{reference.wolfram_2025_netganoperator, organization={Wolfram Research}, title={NetGANOperator}, year={2020}, url={https://reference.wolfram.com/language/ref/NetGANOperator.html}, note=[Accessed: 30-March-2025 ]}

@online{reference.wolfram_2025_netganoperator, organization={Wolfram Research}, title={NetGANOperator}, year={2020}, url={https://reference.wolfram.com/language/ref/NetGANOperator.html}, note=[Accessed: 30-March-2025 ]}