Keras进度条打印新行而不是更新栏

时间:2019-02-27 14:34:28

标签: python tensorflow keras

除Jupyter Notebook外,我在所有尝试的地方都遇到此错误:Python控制台PyCharm,使用tf.keras,使用我安装的keras,等等。 我有python 3.7.2,并且我的tensorflow是最新的。

我通过Keras为MNIST数据集创建了一个简单的模型,当我尝试使用verbose=1进行训练时,我得到的是新行,而不是预期的进度条更新:

3808/60000 [>.............................] - ETA: 1:00 - loss: 0.9823 - acc: 0
3872/60000 [>.............................] - ETA: 1:00 - loss: 0.9753 - acc: 0
3936/60000 [>.............................] - ETA: 1:00 - loss: 0.9652 - acc: 0
4000/60000 [=>............................] - ETA: 1:00 - loss: 0.9544 - acc: 0
4064/60000 [=>............................] - ETA: 59s - loss: 0.9468 - acc: 0.
4128/60000 [=>............................] - ETA: 59s - loss: 0.9376 - acc: 0.
4192/60000 [=>............................] - ETA: 59s - loss: 0.9290 - acc: 0.
4256/60000 [=>............................] - ETA: 59s - loss: 0.9213 - acc: 0.

有任何线索吗?

P.S。精度不为0,这不是此问题的一部分。我还确保tqdm加载栏对我有用。
以下是相关的代码:https://gist.github.com/omer54321/bde99aa48794a4221fd308a2c55a33dc

2 个答案:

答案 0 :(得分:0)

似乎Keras决定是否允许使用名为sys.stdout.isatty()的函数更新进度条,该函数在PyCharm中为false(尽管能够更新进度条),所以我要做的就是进入\ Lib \ site-packages \ keras \ utils并将or "PYCHARM_HOSTED" in os.environ添加到if语句中。 (对我来说,第355行是前缀行:if self._dynamic_display:

答案 1 :(得分:0)

在PyCharm上,我发现此解决方案非常有用:https://stackoverflow.com/a/41598441

在控制台中运行此代码

class PseudoTTY(object):
    def __init__(self, underlying):
        self.__underlying = underlying
    def __getattr__(self, name):
        return getattr(self.__underlying, name)
    def isatty(self):
        return True

sys.stdout = PseudoTTY(sys.stdout)