@@ -1187,6 +1187,39 @@ void MulticlassTrainersOnnxConversionTest()
11871187 Done ( ) ;
11881188 }
11891189
1190+ [ Fact ]
1191+ void CopyColumnsOnnxTest ( )
1192+ {
1193+ var mlContext = new MLContext ( seed : 1 ) ;
1194+
1195+ var trainDataPath = GetDataPath ( TestDatasets . generatedRegressionDataset . trainFilename ) ;
1196+ var dataView = mlContext . Data . LoadFromTextFile < AdultData > ( trainDataPath ,
1197+ separatorChar : ';' ,
1198+ hasHeader : true ) ;
1199+
1200+ var pipeline = mlContext . Transforms . CopyColumns ( "Target1" , "Target" ) ;
1201+ var model = pipeline . Fit ( dataView ) ;
1202+ var transformedData = model . Transform ( dataView ) ;
1203+ var onnxModel = mlContext . Model . ConvertToOnnxProtobuf ( model , dataView ) ;
1204+
1205+ var onnxFileName = "copycolumns.onnx" ;
1206+ var onnxModelPath = GetOutputPath ( onnxFileName ) ;
1207+
1208+ SaveOnnxModel ( onnxModel , onnxModelPath , null ) ;
1209+
1210+ if ( IsOnnxRuntimeSupported ( ) )
1211+ {
1212+ // Evaluate the saved ONNX model using the data used to train the ML.NET pipeline.
1213+ string [ ] inputNames = onnxModel . Graph . Input . Select ( valueInfoProto => valueInfoProto . Name ) . ToArray ( ) ;
1214+ string [ ] outputNames = onnxModel . Graph . Output . Select ( valueInfoProto => valueInfoProto . Name ) . ToArray ( ) ;
1215+ var onnxEstimator = mlContext . Transforms . ApplyOnnxModel ( outputNames , inputNames , onnxModelPath ) ;
1216+ var onnxTransformer = onnxEstimator . Fit ( dataView ) ;
1217+ var onnxResult = onnxTransformer . Transform ( dataView ) ;
1218+ CompareSelectedR4ScalarColumns ( model . ColumnPairs [ 0 ] . outputColumnName , outputNames [ 2 ] , transformedData , onnxResult ) ;
1219+ }
1220+ Done ( ) ;
1221+ }
1222+
11901223 private void CreateDummyExamplesToMakeComplierHappy ( )
11911224 {
11921225 var dummyExample = new BreastCancerFeatureVector ( ) { Features = null } ;
0 commit comments