@@ -28,16 +28,15 @@ static void UseApi()
28
28
using ( var session = new InferenceSession ( modelPath ) )
29
29
{
30
30
var inputMeta = session . InputMetadata ;
31
+ var container = new List < NamedOnnxValue > ( ) ;
31
32
32
- // User should be able to detect input name/type/shape from the metadata.
33
- // Currently InputMetadata implementation is inclomplete, so assuming Tensor<flot> of predefined dimension.
34
-
35
- var shape0 = new int [ ] { 1 , 3 , 224 , 224 } ;
36
- float [ ] inputData0 = LoadInputsFloat ( ) ;
37
- var tensor = new DenseTensor < float > ( inputData0 , shape0 ) ;
33
+ float [ ] inputData = LoadTensorFromFile ( @"bench.in" ) ; // this is the data for only one input tensor for this model
38
34
39
- var container = new List < NamedOnnxValue > ( ) ;
40
- container . Add ( new NamedOnnxValue ( "data_0" , tensor ) ) ;
35
+ foreach ( var name in inputMeta . Keys )
36
+ {
37
+ var tensor = new DenseTensor < float > ( inputData , inputMeta [ name ] . Dimensions ) ;
38
+ container . Add ( new NamedOnnxValue ( name , tensor ) ) ;
39
+ }
41
40
42
41
// Run the inference
43
42
var results = session . Run ( container ) ; // results is an IReadOnlyList<NamedOnnxValue> container
@@ -49,40 +48,27 @@ static void UseApi()
49
48
Console . WriteLine ( r . AsTensor < float > ( ) . GetArrayString ( ) ) ;
50
49
}
51
50
52
- // Just try some GC collect
53
- results = null ;
54
- container = null ;
55
-
56
- GC . Collect ( ) ;
57
- GC . WaitForPendingFinalizers ( ) ;
58
51
}
59
52
}
60
53
61
- static int [ ] LoadInputsInt32 ( )
54
+ static float [ ] LoadTensorFromFile ( string filename )
62
55
{
63
- return null ;
64
- }
65
-
66
- static float [ ] LoadInputsFloat ( )
67
- {
68
- // input: data_0 = float32[1,3,224,224] for squeezenet model
69
- // output: softmaxout_1 = float32[1,1000,1,1]
70
- uint size = 1 * 3 * 224 * 224 ;
71
- float [ ] tensor = new float [ size ] ;
56
+ var tensorData = new List < float > ( ) ;
72
57
73
58
// read data from file
74
- using ( var inputFile = new System . IO . StreamReader ( @"bench.in" ) )
59
+ using ( var inputFile = new System . IO . StreamReader ( filename ) )
75
60
{
76
61
inputFile . ReadLine ( ) ; //skip the input name
77
62
string [ ] dataStr = inputFile . ReadLine ( ) . Split ( new char [ ] { ',' , '[' , ']' } , StringSplitOptions . RemoveEmptyEntries ) ;
78
63
for ( int i = 0 ; i < dataStr . Length ; i ++ )
79
64
{
80
- tensor [ i ] = Single . Parse ( dataStr [ i ] ) ;
65
+ tensorData . Add ( Single . Parse ( dataStr [ i ] ) ) ;
81
66
}
82
67
}
83
68
84
- return tensor ;
69
+ return tensorData . ToArray ( ) ;
85
70
}
86
71
72
+
87
73
}
88
74
}
0 commit comments