Я работаю над проектом машинного обучения с 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
. Но из-за многопоточной среды я не смог читать в режиме реального времени. Существует ли более простой способ сбора или считывания информации каждого сообщения трассировки и, предпочтительно, мгновенного сохранения их в виде строки без необходимости в файлах журнала?
Заранее спасибо.