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;
}
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;
}