Tensorflow 打印奇怪的符号:as []
Tensorflow Printing Weird Symbols: as []
每当我 运行 在 Python 的 IDLE 中使用 verbose=1
的 Tensorflow 模型时,我在每个纪元期间都会得到一条奇怪的矩形线(如下所示)。我最近换了电脑,这在我以前的笔记本电脑上没有发生,但在这台笔记本电脑上总是发生。这很烦人,因为您可能知道,打印更多字符会大大降低 IDLE 速度...
任何想法如何解决?
重要说明:我将 [ 和 ] 放在一起代表矩形,因为当我在此处打印文本时,它实际上显示正确,即使没有代码格式。
在此先感谢您的帮助!
信息:
笔记本电脑:宏碁 Aspire 5
OS: Windows 10 - 64 位
Python 的标准 IDLE
Python: 3.7
张量流 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:35 秒 - 损失:0.4803 - 准确度: 0.0000e+00 - MeanSquaredError: 0.1414[][][][][][][][][][][][][][][][][][][][][ ][][][][][][][][][][][][][][][][][][]
24/182 [==>................................] - ETA:35s - 损失:0.4891 - 准确度:0.0000e+00 - 均方误差:0.1483
问题在于 tensorflow 将其正在进行的输出格式化为要打印 () 的文本,但它不支持 IDLE,并且打印 () 文本非常不适合 IDLE shell。 (它显然知道它不是打印到标准终端。)更糟糕的是,比您所做的要长 运行s,是在输出到 IDLE 时遗漏了换行符(与终端输出不同)。这完全是错误的。超过 10000 个字符的单行最终会冻结底层的 tk 图形框架。
根据 this screenshop for bpo issue 37762, the rectangles might be inverse bullets 由 Tenserflow 输出或由 tk 文本小部件用作 'replacement' 个字符来判断。如果您可以将矩形的副本粘贴到下一行并 运行 它可能会有所帮助。
for c in '[]...[]': print(hex(ord(c)))
在我看来,tensorflow/keras 等可导入模块应该有 API return 将结果作为未格式化、未字符串化的 python 对象,以便导入代码可以将结果显示为用户认为最好。或者他们至少应该提供 return(而不是打印)文本字符串,最好是易于解析的逗号分隔值,用户可以根据需要进行处理。
如果您找不到更改从 tensorflow 获得的内容的选项,那么您应该 运行 在命令提示符中,至少 运行 超过 50 行。
每当我 运行 在 Python 的 IDLE 中使用 verbose=1
的 Tensorflow 模型时,我在每个纪元期间都会得到一条奇怪的矩形线(如下所示)。我最近换了电脑,这在我以前的笔记本电脑上没有发生,但在这台笔记本电脑上总是发生。这很烦人,因为您可能知道,打印更多字符会大大降低 IDLE 速度...
任何想法如何解决?
重要说明:我将 [ 和 ] 放在一起代表矩形,因为当我在此处打印文本时,它实际上显示正确,即使没有代码格式。
在此先感谢您的帮助!
信息:
笔记本电脑:宏碁 Aspire 5
OS: Windows 10 - 64 位
Python 的标准 IDLE
Python: 3.7
张量流 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:35 秒 - 损失:0.4803 - 准确度: 0.0000e+00 - MeanSquaredError: 0.1414[][][][][][][][][][][][][][][][][][][][][ ][][][][][][][][][][][][][][][][][][] 24/182 [==>................................] - ETA:35s - 损失:0.4891 - 准确度:0.0000e+00 - 均方误差:0.1483
问题在于 tensorflow 将其正在进行的输出格式化为要打印 () 的文本,但它不支持 IDLE,并且打印 () 文本非常不适合 IDLE shell。 (它显然知道它不是打印到标准终端。)更糟糕的是,比您所做的要长 运行s,是在输出到 IDLE 时遗漏了换行符(与终端输出不同)。这完全是错误的。超过 10000 个字符的单行最终会冻结底层的 tk 图形框架。
根据 this screenshop for bpo issue 37762, the rectangles might be inverse bullets 由 Tenserflow 输出或由 tk 文本小部件用作 'replacement' 个字符来判断。如果您可以将矩形的副本粘贴到下一行并 运行 它可能会有所帮助。
for c in '[]...[]': print(hex(ord(c)))
在我看来,tensorflow/keras 等可导入模块应该有 API return 将结果作为未格式化、未字符串化的 python 对象,以便导入代码可以将结果显示为用户认为最好。或者他们至少应该提供 return(而不是打印)文本字符串,最好是易于解析的逗号分隔值,用户可以根据需要进行处理。
如果您找不到更改从 tensorflow 获得的内容的选项,那么您应该 运行 在命令提示符中,至少 运行 超过 50 行。