Как читать или перехватывать сообщения трассировки во время выполнения и сохранять их в строке с C#? - PullRequest
2 голосов
/ 30 марта 2020

Я работаю над проектом машинного обучения с C # / Windows Forms, в котором используется библиотека с именем SharpLearning . Эта библиотека была рассмотрена в приложении, поскольку она очень проста в создании, обучении и тестировании моделей. Тем не менее, я изо всех сил пытался найти способ перехватить или прочитать в режиме реального времени сообщения трассировки, испускаемые в процессе обучения данной модели, чтобы получить ее текущий номер эпохи. Эта информация, если она собрана и правильно сохранена в строке, поможет обновить индикатор выполнения (currentEpoch / numEpochs). Основной фрагмент кода относительно текущей информации об эпохе, который можно найти в репозитории SharpLearning's Github (https://github.com/mdabros/SharpLearning/blob/master/src/SharpLearning.Neural/Learners/NeuralNetLearner.cs), выглядит следующим образом:

for (int iteration = 0; iteration < m_iterations; iteration++)
{
      // ...
      Trace.WriteLine(string.Format("Iteration: {0:000} - Loss {1:0.00000} - Validation: {2:0.00000} - Time (ms): {3}",
                    (iteration + 1), currentLoss, validationLoss, timer.ElapsedMilliseconds));

      // ...   
}

Я уже пробовал читать в время выполнения - файл журнала, который был одновременно записан прослушивателем трассировки с именем TextWriterTraceListener. Но из-за многопоточной среды я не смог читать в режиме реального времени. Существует ли более простой способ сбора или считывания информации каждого сообщения трассировки и, предпочтительно, мгновенного сохранения их в виде строки без необходимости в файлах журнала?

Заранее спасибо.

...