我在我尝试的每个地方都会遇到此错误,除了jupyter笔记本:python控制台,pycharm,使用tf.keras使用tf.keras,使用我安装的keras i ect。我有Python 3.7.2,我的TensorFlow是最新的。
我通过KERA为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/bde99aa48794a4221fd308a2c5555a3333dc
似乎KERAS决定是否允许使用名为sys.stdout.isatty()的函数更新进度栏,该函数在pycharm中是错误的(尽管它能够更新进度栏),因此,我要做的就是进入 lib site-packages keras utils,然后将or "PYCHARM_HOSTED" in os.environ
添加到if
语句中。(对我而言,第355行,前固定行是:if self._dynamic_display:
)
在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)