GAN训练在Jupyter Notebook输出停滞(显示ETA:0s)的解决方法
解决Jupyter Notebook中GAN训练日志停滞的问题
你遇到的情况是Jupyter Notebook的输出缓冲或进度条输出导致的日志停滞,以下是几个直接有效的解决办法:
1. 关闭Keras预测进度条
代码中generator.predict()默认会输出进度条,大量的进度条输出会挤占输出缓冲区,导致后续日志无法正常显示。给所有predict调用加上verbose=0参数,禁用进度条:
# 训练循环中的生成假图像 fake_images = generator.predict(noise, verbose=0) # 保存图像时的生成操作 generated_images = generator.predict(noise, verbose=0)
2. 强制刷新输出缓冲区
Jupyter的stdout输出会有缓冲,有时候日志已经生成但没及时显示。在打印训练日志的代码后强制刷新缓冲区:
print("Epoch {} Discriminator Loss: {} Generator Loss: {}".format(epoch, discriminator_loss[0], generator_loss)) import sys sys.stdout.flush() # 强制刷新输出
3. 减少日志输出频率
原代码每轮都打印日志,10000轮的输出量会给Jupyter带来压力。可以调整为每10轮或20轮打印一次:
# 替换原打印逻辑 if epoch % 10 == 0: print("Epoch {} Discriminator Loss: {} Generator Loss: {}".format(epoch, discriminator_loss[0], generator_loss)) sys.stdout.flush()
4. 重启Jupyter内核
长时间运行的内核可能出现资源泄漏或缓存异常,直接重启内核后重新运行代码,能解决大部分输出阻塞问题。
5. 改用终端运行
如果以上方法都无效,把代码保存为.py文件,在终端中用python your_code.py命令运行,终端的输出机制更稳定,不会出现停滞情况。
内容的提问来源于stack exchange,提问作者Blob
相关产品推荐
相关产品推荐

