public void TestUnknownDimensions() { // model contains -1 in input and output shape dimensions // model: input dims = [-1, 3], output argmax dims = [-1] var modelFile = @"unknowndimensions/test_unknowndimensions_float.onnx"; var mlContext = new MLContext(); var data = new TestDataUnknownDimensions[] { new TestDataUnknownDimensions() { input = new float[] { 1.1f, 1.3f, 1.2f } }, new TestDataUnknownDimensions() { input = new float[] { -1.1f, -1.3f, -1.2f } }, new TestDataUnknownDimensions() { input = new float[] { -1.1f, -1.3f, 1.2f } }, }; var idv = mlContext.Data.LoadFromEnumerable(data); var pipeline = ML.Transforms.ApplyOnnxModel(modelFile); var transformedValues = pipeline.Fit(idv).Transform(idv); var predictions = mlContext.Data.CreateEnumerable <PredictionUnknownDimensions>(transformedValues, reuseRowObject: false).ToArray(); Assert.Equal(1, predictions[0].argmax[0]); Assert.Equal(0, predictions[1].argmax[0]); Assert.Equal(2, predictions[2].argmax[0]); }
[ConditionalFact(typeof(Environment), nameof(Environment.Is64BitProcess))] // x86 output differs from Baseline public void TestUnknownDimensions() { if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { return; } // model contains -1 in input and output shape dimensions // model: input dims = [-1, 3], output argmax dims = [-1] var modelFile = @"unknowndimensions/test_unknowndimensions_float.onnx"; var mlContext = new MLContext(); var data = new TestDataUnknownDimensions[] { new TestDataUnknownDimensions() { input = new float[] { 1.1f, 1.3f, 1.2f } }, new TestDataUnknownDimensions() { input = new float[] { -1.1f, -1.3f, -1.2f } }, new TestDataUnknownDimensions() { input = new float[] { -1.1f, -1.3f, 1.2f } }, }; var idv = mlContext.CreateStreamingDataView(data); var pipeline = new OnnxScoringEstimator(mlContext, modelFile); var transformedValues = pipeline.Fit(idv).Transform(idv); var predictions = transformedValues.AsEnumerable <PredictionUnknownDimensions>(mlContext, reuseRowObject: false).ToArray(); Assert.Equal(1, predictions[0].argmax[0]); Assert.Equal(0, predictions[1].argmax[0]); Assert.Equal(2, predictions[2].argmax[0]); }