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]);
        }
예제 #2
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]);
        }