示例#1
0
        public static Output MakeScoringTransform(IHostEnvironment env, ModelInput input)
        {
            Contracts.CheckValue(env, nameof(env));
            var host = env.Register("MakeScoringTransform");

            host.CheckValue(input, nameof(input));
            EntryPointUtils.CheckInputArgs(host, input);

            IPredictor     predictor;
            RoleMappedData data;
            var            emptyData = new EmptyDataView(host, input.PredictorModel.TransformModel.InputSchema);

            input.PredictorModel.PrepareData(host, emptyData, out data, out predictor);

            IDataView scoredPipe;

            using (var ch = host.Start("Creating scoring pipeline"))
            {
                ch.Trace("Creating pipeline");
                var bindable = ScoreUtils.GetSchemaBindableMapper(host, predictor, scorerSettings: null);
                ch.AssertValue(bindable);

                var mapper = bindable.Bind(host, data.Schema);
                var scorer = ScoreUtils.GetScorerComponent(mapper);
                scoredPipe = scorer.CreateInstance(host, data.Data, mapper, input.PredictorModel.GetTrainingSchema(host));
                ch.Done();
            }

            return(new Output
            {
                ScoredData = scoredPipe,
                ScoringTransform = new TransformModel(host, scoredPipe, emptyData)
            });
        }
示例#2
0
        public static Output Score(IHostEnvironment env, Input input)
        {
            Contracts.CheckValue(env, nameof(env));
            var host = env.Register("ScoreModel");

            host.CheckValue(input, nameof(input));
            EntryPointUtils.CheckInputArgs(host, input);

            var inputData = input.Data;

            input.PredictorModel.PrepareData(host, inputData, out RoleMappedData data, out IPredictor predictor);

            IDataView scoredPipe;

            using (var ch = host.Start("Creating scoring pipeline"))
            {
                ch.Trace("Creating pipeline");
                var bindable = ScoreUtils.GetSchemaBindableMapper(host, predictor);
                ch.AssertValue(bindable);

                var mapper = bindable.Bind(host, data.Schema);
                var scorer = ScoreUtils.GetScorerComponent(host, mapper, input.Suffix);
                scoredPipe = scorer.CreateComponent(host, data.Data, mapper, input.PredictorModel.GetTrainingSchema(host));
            }

            return
                (new Output
            {
                ScoredData = scoredPipe,
                ScoringTransform = new TransformModelImpl(host, scoredPipe, inputData)
            });
        }
示例#3
0
        public static ScoringTransformOutput Score(IHostEnvironment env, ScoringTransformInput input)
        {
            Contracts.CheckValue(env, nameof(env));
            var host = env.Register("ScoreModel");

            host.CheckValue(input, nameof(input));
            EntryPointUtils.CheckInputArgs(host, input);

            RoleMappedData data;
            IPredictor     predictor;
            var            inputData = input.Data;

            try
            {
                input.PredictorModel.PrepareData(host, inputData, out data, out predictor);
            }
            catch (Exception)
            {
                // this can happen in csr_matrix case, try to use only trainer model.
                host.Assert(inputData.Schema.Count == 1);
                var inputColumnName = inputData.Schema[0].Name;
                var trainingSchema  = input.PredictorModel.GetTrainingSchema(host);
                // get feature vector item type.
                var trainingFeatureColumn = (DataViewSchema.Column)trainingSchema.Feature;
                var requiredType          = trainingFeatureColumn.Type.GetItemType().RawType;
                var featuresColumnName    = trainingFeatureColumn.Name;
                predictor = input.PredictorModel.Predictor;
                var xf = new TypeConvertingTransformer(host,
                                                       new TypeConvertingEstimator.ColumnOptions(featuresColumnName, requiredType, inputColumnName)).Transform(inputData);
                data = new RoleMappedData(xf, null, featuresColumnName);
            }

            IDataView scoredPipe;

            using (var ch = host.Start("Creating scoring pipeline"))
            {
                ch.Trace("Creating pipeline");
                var bindable = ScoreUtils.GetSchemaBindableMapper(host, predictor);
                ch.AssertValue(bindable);

                var mapper = bindable.Bind(host, data.Schema);
                var scorer = ScoreUtils.GetScorerComponent(host, mapper, input.Suffix);
                scoredPipe = scorer.CreateComponent(host, data.Data, mapper, input.PredictorModel.GetTrainingSchema(host));
            }

            return
                (new ScoringTransformOutput
            {
                ScoredData = scoredPipe,
                ScoringTransform = new TransformModelImpl(host, scoredPipe, inputData)
            });
        }
示例#4
0
        public static Output Score(IHostEnvironment env, Input input)
        {
            Contracts.CheckValue(env, nameof(env));
            var host = env.Register("ScoreModel");

            host.CheckValue(input, nameof(input));
            EntryPointUtils.CheckInputArgs(host, input);


            IPredictor     predictor;
            var            inputData = input.Data;
            RoleMappedData data;

            input.PredictorModel.PrepareData(host, inputData, out data, out predictor);

            IDataView scoredPipe;

            using (var ch = host.Start("Creating scoring pipeline"))
            {
                ch.Trace("Creating pipeline");
                var bindable = ScoreUtils.GetSchemaBindableMapper(host, predictor, scorerSettings: null);
                ch.AssertValue(bindable);

                var mapper = bindable.Bind(host, data.Schema);
                var scorer = ScoreUtils.GetScorerComponent(mapper);
                Contracts.Assert(string.IsNullOrEmpty(scorer.SubComponentSettings));
                scorer.SubComponentSettings = string.Format("suffix={{{0}}}", input.Suffix);
                scoredPipe = scorer.CreateInstance(host, data.Data, mapper, input.PredictorModel.GetTrainingSchema(host));
                ch.Done();
            }

            return
                (new Output
            {
                ScoredData = scoredPipe,
                ScoringTransform = new TransformModel(host, scoredPipe, inputData)
            });
        }