Чтение файла журнала прогресса обучения, но в нем записаны двоичные файлы - PullRequest
0 голосов
/ 02 апреля 2020

Я запустил программу, и она выведет индикатор выполнения в файл train.2.log. Вот ссылка на файл train.2.log , который на терминале выглядит следующим образом:

Это строка 1

Training ...

Это строка 2

epoch       iteration   main/loss   main/loss_ctc  main/loss_att ...

Это строка 3

0           100         455.209     899.082        264.978 ...

Нет проблем при вызове head -n3 train.2.log, он хорошо показывает первые 3 строки, но в текстовом файле его нет читаемый человеком, из-за двоичных файлов <0x1b>, которые написаны внутри него (см. train.2.log ).

Вопрос : Как мне изменить такой файл, что он становится читаемым человеком?

Обычно индикаторы выполнения пишутся так, что вместо \n используется \r, после этого вопрос . Поэтому я попробовал это решение , которое не работало, поскольку программа , которую я назвал , похоже, не использует \r.

1 Ответ

1 голос
/ 02 апреля 2020

Кажется, проблема в том, что вы выводите и ход обучения, и его журнал в один и тот же поток вывода. Если вы получили train.2.log, перенаправив вывод Python в файл в терминале (app.py > train.log), но все еще хотите наблюдать за его прогрессом, то я бы предложил распечатать журнал в отдельный поток, например stderr .

Вы можете добиться этого в Python с помощью print("Log message", file=sys.stderr), затем перенаправить вывод программы:

app.py 2>train.log

Таким образом app.py будет выводить индикатор выполнения на stdout как обычно , в то время как журнал тренировок доступен на stderr без указания прогресса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...