如何将 ONNX result = Object {Microsoft.ML.OnnxRuntime.Tensors.DenseTensor<long>} 更改为 Something?
How can I change ONNX result = Object {Microsoft.ML.OnnxRuntime.Tensors.DenseTensor<long>} to Something?
你好!
我是 Microsoft ML ONNX 的新手。
使用 'Visual studio 2019'、'Windows Forms App' 和“.NET 框架(C# 7.3 版本)”制作 GUI
我使用 python sklearn 制作简单的 KNN,然后导出为 ONNX 形式。
MS VS Forms 正在通过串行通信从 DSP 接收传感器数据,然后程序使用传感器数据为 ONNX InferenceSession 制作输入张量(1*3 float dense tensor)。
我的 ONNX 预测代码如下所示。
private void Predict()
{
string Filepath = "C:\Users\lee5w\source\repos\Rehabilitation\Rehabilitation\Resource\KNN.onnx";
InferenceSession session = new InferenceSession(Filepath);
DenseTensor<float> T1;
float[,] Predict_input = new float[1, 3];
Predict_input[0, 0] = (float)value[5];
Predict_input[0, 1] = (float)value[6];
Predict_input[0, 2] = (float)value[7];
RMS1.Text = "RMS1: " + value[5].ToString();
RMS2.Text = "RMS2: " + value[6].ToString();
RMS3.Text = "RMS3: " + value[7].ToString();
T1 = Predict_input.ToTensor();
var inputMeta = session.InputMetadata;
var outputMeta = session.OutputMetadata;
var inputs1 = new List<NamedOnnxValue>();
foreach (var name in inputMeta.Keys)
{
inputs1.Add(NamedOnnxValue.CreateFromTensor<float>(name, T1));
}
try
{
//IDisposableReadOnlyCollection<DisposableNamedOnnxValue> Run(IReadOnlyCollection<NamedOnnxValue> inputs, IReadOnlyCollection<string> desiredOutputNodes);
var results = session.Run(inputs1); //IDisposableReadOnlyCollection<DisposableNamedOnnxValue>
// dump the results
var inferenceResult = results.ToList()[0];
var inferenceResult_Value = inferenceResult.Value;
var Output = session.Run(inputs1).ToList().First().AsEnumerable<NamedOnnxValue>();
}
catch (Exception error)
{
MessageBox.Show(error.Message);
}
}
在调试状态下我可以发现 'result.ToList()[0]' 是 output_label。
所以我尝试使用'result.ToList()[0]'的值,但我不能把它变成任何不同的形状。
Image of visual studio debug values
我尝试了张量形式、列表形式、字典形式,但它们 return 'null'。
当我使用 .ToString() 它时 return 'Microsoft.ML.OnnxRuntime.Tensors.DenseTensor'
有谁知道如何把'Object {Microsoft.ML.OnnxRuntime.Tensors.DenseTensor} '的值变成string或者int吗?
Inside of Object {Microsoft.ML.OnnxRuntime.Tensors.DenseTensor}
我只是找到自己的答案。
事情是这样的。
var Test = results.ToList()[0].AsTensor<long>().ToArray<long>()[0].ToString();
你好!
我是 Microsoft ML ONNX 的新手。
使用 'Visual studio 2019'、'Windows Forms App' 和“.NET 框架(C# 7.3 版本)”制作 GUI
我使用 python sklearn 制作简单的 KNN,然后导出为 ONNX 形式。
MS VS Forms 正在通过串行通信从 DSP 接收传感器数据,然后程序使用传感器数据为 ONNX InferenceSession 制作输入张量(1*3 float dense tensor)。
我的 ONNX 预测代码如下所示。
private void Predict()
{
string Filepath = "C:\Users\lee5w\source\repos\Rehabilitation\Rehabilitation\Resource\KNN.onnx";
InferenceSession session = new InferenceSession(Filepath);
DenseTensor<float> T1;
float[,] Predict_input = new float[1, 3];
Predict_input[0, 0] = (float)value[5];
Predict_input[0, 1] = (float)value[6];
Predict_input[0, 2] = (float)value[7];
RMS1.Text = "RMS1: " + value[5].ToString();
RMS2.Text = "RMS2: " + value[6].ToString();
RMS3.Text = "RMS3: " + value[7].ToString();
T1 = Predict_input.ToTensor();
var inputMeta = session.InputMetadata;
var outputMeta = session.OutputMetadata;
var inputs1 = new List<NamedOnnxValue>();
foreach (var name in inputMeta.Keys)
{
inputs1.Add(NamedOnnxValue.CreateFromTensor<float>(name, T1));
}
try
{
//IDisposableReadOnlyCollection<DisposableNamedOnnxValue> Run(IReadOnlyCollection<NamedOnnxValue> inputs, IReadOnlyCollection<string> desiredOutputNodes);
var results = session.Run(inputs1); //IDisposableReadOnlyCollection<DisposableNamedOnnxValue>
// dump the results
var inferenceResult = results.ToList()[0];
var inferenceResult_Value = inferenceResult.Value;
var Output = session.Run(inputs1).ToList().First().AsEnumerable<NamedOnnxValue>();
}
catch (Exception error)
{
MessageBox.Show(error.Message);
}
}
在调试状态下我可以发现 'result.ToList()[0]' 是 output_label。 所以我尝试使用'result.ToList()[0]'的值,但我不能把它变成任何不同的形状。
Image of visual studio debug values
我尝试了张量形式、列表形式、字典形式,但它们 return 'null'。 当我使用 .ToString() 它时 return 'Microsoft.ML.OnnxRuntime.Tensors.DenseTensor'
有谁知道如何把'Object {Microsoft.ML.OnnxRuntime.Tensors.DenseTensor} '的值变成string或者int吗?
Inside of Object {Microsoft.ML.OnnxRuntime.Tensors.DenseTensor}
我只是找到自己的答案。
事情是这样的。
var Test = results.ToList()[0].AsTensor<long>().ToArray<long>()[0].ToString();