2

私はそのようなガンを持っています

generator = Model(g_in, g_out)
generator.compile(...)

discriminator = Model(d_in, d_out)
discriminator.trainable = True
discriminator.compile(..)

discriminator.trainable = False

gan = Model(inputs=.., outputs=..)
gan.compile(..)

#iterate over epochs and batches, without compiling

学習し、許容可能な出力を提供します。ただし、次の警告が表示されます。

"keras\engine\training.py:490: UserWarning: トレーニング可能な重みと収集されたトレーニング可能な重みの間の不一致、あなたは後model.trainableに呼び出さずに設定model.compileしましたか?「トレーニング可能な重みと収集されたトレーニング可能な重みの間の不一致」"

ディスクリミネーターを再コンパイルしてバッチごとにガン化すると、警告は消えますが、1 回の反復に時間がかかり、トレーニング速度が遅くなります。

for epoch:
  for batch:

    fakes=generator.predict_on_batch(batch)

    discriminator.trainable = True
    discriminator.compile(..)

    discriminator.train_on_batch(batch, ..)
    discriminator.train_on_batch(fakes, ..)

    discriminator.trainable = False
    discriminator.compile(..)
    gan.compile(..)

    gan.train_on_batch(batch,..)

どちらが正しいですか?

4

1 に答える 1