質問
GANのGeneretorは乱数から画像を作る、と当たり前のように説明されていますが、ここが理解できません。
自分でコードを調べる前は、乱数は各学習ステップに関わらず、最初に設定した値を固定して使うと思っていたのですが、以下のコード(添付リンクから引用)では、乱数は各epochで毎回初期化しているようです。
例えば、画像が猫か犬か判定するモデルを作ろうとした時に、当然入力は学習データで固定されており、固定されているからこそ、重みを各epochで更新していくことができると思うのですが、GANでは入力に規則性がなく、各epochでも入力が変動するのにも関わらず、なぜ、規則的な画像を出力する方向で学習できるのでしょうか?
入力が乱数で毎回変わると、ネットワーク構造なんてできないのでは?という素朴な疑問です。
Python
1def train(self, epochs, batch_size=128, save_interval=50): 2 3 # mnistデータの読み込み 4 (X_train, _), (_, _) = mnist.load_data() 5 6 # 値を-1 to 1に規格化 7 X_train = (X_train.astype(np.float32) - 127.5) / 127.5 8 X_train = np.expand_dims(X_train, axis=3) 9 10 half_batch = int(batch_size / 2) 11 12 for epoch in range(epochs): 13 14 # --------------------- 15 # Discriminatorの学習 16 # --------------------- 17 18 # バッチサイズの半数をGeneratorから生成 19 noise = np.random.normal(0, 1, (half_batch, self.z_dim)) 20 gen_imgs = self.generator.predict(noise) 21 22 # 以下省略
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/11/23 07:27
退会済みユーザー
2022/11/23 14:43
2022/11/24 00:01 編集