除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
答案 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)