Pycharm下keras正常显示进度条

Pycharm下keras正常显示进度条

原文地址:http://home.ustc.edu.cn/~yqli1995/2019/11/04/keras-progressbar/

简单方便的解决办法,不需要修改库代码

在Pycharm下运行keras的模型,verbose的时候会出现不停换行的现象,简单的在代码前import ipykernel就可以解决问题。

import ipykernel

通过pip可以在环境中安装ipykernel

pip install ipykernel

使用后就不会一个batchsize换一次行了
在这里插入图片描述

原因

keras的进度条在Pycharm中显示异常,许多人改动了generic_utils中Progbar类的update方法

# if self._dynamic_display:
#     sys.stdout.write('\b' * prev_total_width)
#     sys.stdout.write('\r')
# else:
#     sys.stdout.write('\n')
sys.stdout.write('\r')
sys.stdout.flush()

这样虽然能解决问题,但是修改库代码总是不太好。

这里我们不希望换行,但是却换行了,说明此处self._dynamic_display为False。
回到其声明的地方查看

self._dynamic_display = ((hasattr(sys.stdout, 'isatty') and
                          sys.stdout.isatty()) or
                          'ipykernel' in sys.modules)

_dynamic_display为True有两种条件

  • hasattr(sys.stdout, ‘isatty’) and sys.stdout.isatty()

  • ‘ipykernel’ in sys.modules

第一种是检测当前输出是否在终端上,第二种是当前导入的包里有没有ipykernel
而pycharm中直接运行的脚本,sys.stdout.isatty()为False,故我们需要满足另一个条件,才能进入正确的分支。
于是只要在代码中import ipykernel就可以解决

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值