我是否必须每批都重新编译我的 Gan,以防止鉴别器学习?
Do I have to recompile my Gan every batch, to prevent the discriminator from learning?
我有这样的甘
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: 用户警告:可训练权重与收集的可训练权重之间存在差异,您是否设置了 model.trainable
而没有在之后调用 model.compile
?
'Discrepancy between trainable weights and collected trainable'"
如果我每批重新编译判别器和 gan,警告消失,但一次迭代需要更长的时间并且训练速度更慢。
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,..)
哪一个是正确的?
这是预料之中的,不需要每批次都重新编译。 Keras 有一个关于此的公开错误:https://github.com/keras-team/keras/issues/8585
里面的回复都有一些绕过警告的例子,这里就不重复了。如果您不确定模型的具体细节,还有一个回复提供了很好的建议,说明如何验证您是否真的在训练您应该训练的内容:https://github.com/keras-team/keras/issues/8585#issuecomment-385729276
我有这样的甘
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: 用户警告:可训练权重与收集的可训练权重之间存在差异,您是否设置了 model.trainable
而没有在之后调用 model.compile
?
'Discrepancy between trainable weights and collected trainable'"
如果我每批重新编译判别器和 gan,警告消失,但一次迭代需要更长的时间并且训练速度更慢。
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,..)
哪一个是正确的?
这是预料之中的,不需要每批次都重新编译。 Keras 有一个关于此的公开错误:https://github.com/keras-team/keras/issues/8585
里面的回复都有一些绕过警告的例子,这里就不重复了。如果您不确定模型的具体细节,还有一个回复提供了很好的建议,说明如何验证您是否真的在训练您应该训练的内容:https://github.com/keras-team/keras/issues/8585#issuecomment-385729276