张量流打印奇怪的符号:作为[]



每当我在Python的IDLE中运行Tensorflow模型时verbose=1我都会在每个纪元时期得到一行奇怪的矩形(如下例所示(。我最近换了电脑,这在我以前的笔记本电脑上没有发生,但在这台笔记本电脑上总是发生。这很烦人,因为您可能知道,打印更多字符会大大减慢空闲速度......
有什么想法如何解决吗?
重要说明:我将 [ 和 ] 放在一起表示矩形,因为当我在此处打印文本时,即使没有代码格式,它实际上也能正确显示。

提前感谢您的帮助!

信息:笔记本电脑:
宏碁Aspire 5
操作系统:Windows 10 - 64
位 Python的标准IDLE
Python:3.7
Tensorflow API:2.0

例:

16/182 [=>............................] - ETA: 35s - loss: 0.5583 - Accuracy: 0.0000e+00 - MeanSquaredError: 0.1716
18/182 [=>............................] - ETA: 36s - loss: 0.5170 - Accuracy: 0.0000e+00 - MeanSquaredError: 0.1561
20/182 [==>...........................] - ETA: 36s - loss: 0.5008 - Accuracy: 0.0000e+00 - MeanSquaredError: 0.1496

显示如下:

22/182 [==>...........................] - 预计到达时间:35 秒 - 损失:0.4803 - 精度:0.0000e+00 - 均方误差:0.1414[][ 24/182 [==>...........................] - 预计到达时间:35秒 - 损失:0.4891 - 精度:0.0000e+00 - 均方误差:0.1483

问题是 tensorflow 将其正在进行的输出格式化为 print(( ed,但它不是 IDLE 感知的,并且是 print((ing 文本非常不适合 IDLE 的 shell。 (它显然知道它没有打印到标准终端。 最糟糕的部分是,对于比您所做的运行更长的运行时间,是在 IDLE 的输出中省略了换行符(与终端输出不同(。 这完全是错误的事情。 长度超过 10000 个字符的单行最终会冻结底层 tk 图形框架。

从 bpo 问题 37762 的这个屏幕来看,矩形可能是由 Tenserflow 输出或由 tk 文本小部件用作"替换"字符的反向项目符号。 如果可以将矩形的副本粘贴到下一行并运行它,可能会有所帮助。

对于 '[]...[]': print(hex(ord(c(((

在我看来,像tensorflow/keras这样的可导入模块应该让API将结果作为未格式化、非字符串化的python对象返回,以便导入代码可以按照用户认为最好的方式显示结果。 或者他们至少应该提供返回(而不是打印(文本字符串,最好是易于解析的逗号分隔值,用户可以根据需要进行处理。

如果您找不到更改从 tensorflow 获得的内容的选项,那么您应该在命令提示符下运行,至少对于超过 50 行的运行。