我有一个像这样的男人
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.compile的情况下设置了model.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,..)哪一个是对的?
发布于 2019-01-05 14:58:33
这是预期的,没有必要重新编译每一批。Keras在这方面有一个公开的错误:https://github.com/keras-team/keras/issues/8585
那里的答复有一些如何传递警告的例子,我不打算在这里重复。还有一个回答,它给出了一个很好的建议,如果你对模型的细节不确定的话,如何验证你真的在训练你应该训练的东西:https://github.com/keras-team/keras/issues/8585#issuecomment-385729276
https://stackoverflow.com/questions/54052953
复制相似问题