gpt4 book ai didi

bash - 从重定向到日志文件的程序输出中删除进度条

转载 作者:行者123 更新时间:2023-12-04 04:15:21 25 4
gpt4 key购买 nike

我正在运行一个程序,它会输出进度条。我是这样做的

python train.py |& tee train.log

train.log 如下所示。

这是第一行

Training ...

这是第 2 行

...
[000] valid: 100%|█████████████████████████████████████████████████████████████▉| 2630/2631 [15:24<00:00, 2.98 track/s]
[000] valid: 100%|██████████████████████████████████████████████████████████████| 2631/2631 [15:25<00:00, 3.02 track/s]
Epoch 000: train=0.11940351 valid=0.10640465 best=0.1064 duration=0.79 days

这是第 3 行 ...

[001] valid: 100%|█████████████████████████████████████████████████████████████▉| 2629/2631 [15:11<00:00,  2.90 
[001] valid: 100%|█████████████████████████████████████████████████████████████▉| 2630/2631 [15:11<00:00, 2.89
[001] valid: 100%|██████████████████████████████████████████████████████████████| 2631/2631 [15:12<00:00, 2.88
Epoch 001: train=0.10971066 valid=0.09931737 best=0.0993 duration=0.79 days

在终端上,它们应该被视为替换自身,因此在日志文件中,有很多重复。所以当我执行 wc -l train.log 时,它只返回 3 行。然而,当我在文本编辑器中打开这个 5MB 的文本文件时,有大约 20000 行。

我的目标是只获取这些细节:

Epoch 000: train=0.11940351 valid=0.10640465 best=0.1064 duration=0.79 days    
Epoch 001: train=0.10971066 valid=0.09931737 best=0.0993 duration=0.79 days

我的问题是:

  1. 如何在不停止当前训练进度的情况下,从 train.log 假定的“3”行中提取所需的详细信息?请记住,此训练将持续进行 10 个以上的 epoch,所以我不想在编辑器中打开进度条的整个垃圾。

  2. 将来,我应该如何存储我的日志文件(而不是调用 python train.py |& tee train.log),这样我就可以在终端,我只将重要信息保存在文本文件中?

编辑 1 :这是文件的链接 train.log

最佳答案

进度条可能会写入 stderr,您可以使用 |& 将其与 stdout 一起发送到 tee

要仅将标准输出写入文件,请改用普通管道 |


进度条是通过写一行然后写一个回车符(\r)但没有换行符(\n ).要解决此问题并能够进一步处理文件,您可以使用例如 sed 's/\r/\n/g'

以下适用于问题中链接的文件:

$ sed 's/\r/\n/g' train.log | grep Epoch
Epoch 000: train=0.11940351 valid=0.10640465 best=0.1064 duration=0.79 days

关于bash - 从重定向到日志文件的程序输出中删除进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60786499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com