CNTK CMD RedirectStandardOutput = true 不工作

CNTK CMD RedirectStandardOutput = true not working

Microsoft 已放弃 ML.NET(糟糕的产品)和 ONNX(尚未研究)的 CNTK。

CNTK,Microsoft 开源的最佳产品,但遗憾的是有很多错误和零支持!

我不情愿地向 Whosebug 社区寻求可能的解决方案。

string filepath = @"<My big long Path>\";
string filename = Path.Combine(filepath, @"Data\SLUHandsOn.cntk");

if (!File.Exists(filename))
    ProcessOutputData("File does not exist!");

Process process = new Process();

process.StartInfo.FileName = "CMD";
process.StartInfo.WorkingDirectory = filepath;
process.StartInfo.Arguments = "/c cntk configFile=" + "\"" + filename + "\"";

process.StartInfo.CreateNoWindow = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;

process.Start();

process.OutputDataReceived += new DataReceivedEventHandler((x, y) =>
{
    ProcessOutputData(y.Data);
});

process.BeginOutputReadLine();

方法ProcessOutputData也很简单:

private void ProcessOutputData(string text)
{

    if (InvokeRequired)
    {
        Invoke(new MethodInvoker(() => { ProcessOutputData(text); }));
    }
    else
    {
        // Output Data:
        richTextBox1.AppendText(text + Environment.NewLine);
    }
}

不用说了,CNTK好像没有输出数据。我已经尝试使用 运行 CNTK 和 CMD.exe 并使用 Visual Studio Tools for AI Redistributable 中的 CNTK.exe。

同样,我面临的问题是没有 RedirectStandardOutput 数据。

谢谢。

回答 感谢:MarcelGrommer - 谢谢!

process.ErrorDataReceived += new DataReceivedEventHandler((sender, e) =>
{

    ProcessOutputData(e.Data);
});

// Asynchronously read the standard Error of the spawned process.
process.BeginErrorReadLine();

您必须使用 RedirectStandardError 通道。 CNTK 计算网络错误,因此数据来自 StandardError 通道。有效。

processCNTK.ErrorDataReceived += new DataReceivedEventHandler((sender, e) =>
{
            string outFromCNTK = e.Data;
}