[每当我在Python的IDLE中使用verbose=1
运行Tensorflow模型时,在每个时期,都会得到一条奇怪的矩形行(如下所示)。我最近更换了计算机,以前的笔记本电脑上没有发生这种情况,但是这种情况一直在发生。这很烦人,因为您可能知道,打印更多字符会大大降低IDLE的速度...任何想法如何解决?重要提示:我将[和]放在一起代表矩形,因为当我在此处打印文本时,即使没有代码格式化,它实际上也可以正确显示。
谢谢您的帮助!
信息:笔记本电脑:Acer Aspire 5操作系统:Windows 10-64 bitsPython的标准IDLE的Python:3.7Tensorflow 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 [==> ....................................]-ETA:35s-损失:0.4803-准确性:0.0000e +00-MeanSquaredError:0.1414 [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []24/182 [==> ....................................]-ETA:35s-损失:0.4891-准确性:0.0000e + 00 -MeanSquaredError:0.1483
问题是,tensorflow将其进行中的输出格式化为要打印()的文本,但它不支持IDLE,并且print()使文本非常不适合IDLE的shell。 (显然,它知道没有在标准终端上打印。)更糟糕的部分是,比您所做的还要更长的运行时间,是输出到IDLE的输出中省略了换行符(与终端输出不同)。这是完全错误的事情。一行超过10000个字符的行最终将冻结基础的tk图形框架。
从this screenshop到bpo issue 37762的判断,这些矩形可能是Tenserflow输出的inverse bullets或tk Text小部件用作“替换”字符。如果您可以将矩形的副本粘贴到以下行并运行它,则可能会有所帮助。
对于'[] ... []中的c:print(hex(ord(c)))
我认为,诸如tensorflow / keras之类的可导入模块应具有返回未格式化,未字符串化的python对象的结果的API,以便导入代码可以按用户认为最佳的方式显示结果。或者,它们至少应提供return(而不是打印)文本字符串,最好是易于解析的逗号分隔值,用户可以根据需要对其进行处理。
如果无法找到一个选项来更改从tensorflow中获得的结果,那么您应该在命令提示符中运行,至少对于运行约50行以上的运行。