Microsoft отказалась от CNTK для ML.NET (Ужасный продукт) и ONNX (Еще не смотрел на это).
CNTK, лучший продукт Microsoft с открытым исходным кодом, но, к сожалению, множество ошибок и нулевой поддержки!
Я неохотно смотрю на сообщество Stackoverflow для возможного разрешения.
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, так и с помощью CNTK.exe из Visual Studio Tools for AI Вторично распространяемый.
Опять же, проблема, с которой я сталкиваюсь, в том, что нет данных RedirectStandardOutput
.
Спасибо.
ОТВЕТ Кредит: MarcelGrommer - Спасибо!
process.ErrorDataReceived += new DataReceivedEventHandler((sender, e) =>
{
ProcessOutputData(e.Data);
});
// Asynchronously read the standard Error of the spawned process.
process.BeginErrorReadLine();