Keras进度条不更新而是换行的技术问题求助
解决Keras/tf.keras训练进度条逐行打印不更新的问题
我之前也遇到过一模一样的问题!在PyCharm或者原生Python控制台里用Keras训练模型时,进度条不动态更新反而逐行打印,太烦人了。结合你的情况(tqdm能正常工作),给你几个靠谱的解决办法:
强制用tqdm接管Keras进度条
既然你已经确认tqdm能正常工作,那直接让Keras用tqdm的进度条就好,默认的进度条在部分终端环境下不支持动态刷新。只需要修改训练代码:from tqdm.keras import TqdmCallback # 训练时关闭默认verbose,改用tqdm回调 model.fit(x_train, y_train, epochs=10, verbose=0, # 关闭Keras自带进度条 callbacks=[TqdmCallback(verbose=1)])这样就能得到和tqdm一样的动态更新进度条了。
开启PyCharm控制台的终端模拟
如果是在PyCharm里出现这个问题,大概率是控制台没启用ANSI转义序列支持,导致进度条无法覆盖更新。按这个步骤设置:- 打开PyCharm的「File -> Settings」
- 找到「Build, Execution, Deployment -> Console -> Python Console」
- 勾选「Emulate terminal in output console」选项
- 重启PyCharm后再运行训练代码试试
关闭Python输出缓冲
要是在原生Python控制台(比如cmd、终端里的Python交互环境)运行,可能是输出缓冲导致进度条逐行打印。可以试试这两个方法:- 运行脚本时加上
-u参数:python -u your_train_script.py,这个参数会强制Python无缓冲输出 - 或者在脚本开头添加代码手动刷新缓冲:
import sys sys.stdout.flush()
- 运行脚本时加上
检查版本兼容性(备选)
你的Python版本3.7.2比较老,虽然你说TensorFlow是最新版,但不排除存在版本适配问题。如果前面的方法都没用,可以试试把TensorFlow降级到适配Python3.7的稳定版本(比如TF2.6.x系列,官方支持Python3.7)。
注:你提到的准确率显示为0不是当前问题,这里就不做处理啦。
内容的提问来源于stack exchange,提问作者Omer Lubin
相关产品推荐
相关产品推荐

