首页 > 解决方案 > 如何在运行时读取或捕获跟踪消息并使用 C# 将它们存储在字符串中?

问题描述

我正在使用 C#/Windows Forms 开发一个机器学习项目,该项目使用一个名为SharpLearning的库。该库已在应用程序中考虑,因为它可以非常简单地构建、训练和测试模型。但是,我一直在努力寻找一种方法来实时捕获或读取给定模型在训练过程中发出的跟踪消息,以便获取其当前的纪元数。此信息在捕获并正确存储在字符串中时,将有助于更新进度条 ( currentEpoch / numEpochs)。可以在 SharpLearning 的 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. 但是,由于多线程环境,我无法实时阅读。有没有更简单的方法来捕获或读取每个跟踪消息的信息,最好是立即将它们存储在一个字符串中,而不需要日志文件?

提前致谢。

标签: c#winformstrace

解决方案


推荐阅读