File: Dynamic\ModelOperations\SaveLoadModel.cs
Web Access
Project: src\docs\samples\Microsoft.ML.Samples\Microsoft.ML.Samples.csproj (Microsoft.ML.Samples)
using System;
using System.Collections.Generic;
using System.IO;
using Microsoft.ML;
 
namespace Samples.Dynamic.ModelOperations
{
    public class SaveLoadModel
    {
        public static void Example()
        {
            // Create a new ML context, for ML.NET operations. It can be used for
            // exception tracking and logging, as well as the source of randomness.
            var mlContext = new MLContext();
 
            // Generate sample data.
            var data = new List<Data>()
            {
                new Data() { Value="abc" }
            };
 
            // Convert data to IDataView.
            var dataView = mlContext.Data.LoadFromEnumerable(data);
            var inputColumnName = nameof(Data.Value);
            var outputColumnName = nameof(Transformation.Key);
 
            // Transform.
            ITransformer model = mlContext.Transforms.Conversion
                .MapValueToKey(outputColumnName, inputColumnName).Fit(dataView);
 
            // Save model.
            mlContext.Model.Save(model, dataView.Schema, "model.zip");
 
            // Load model.
            using (var file = File.OpenRead("model.zip"))
                model = mlContext.Model.Load(file, out DataViewSchema schema);
 
            // Create a prediction engine from the model for feeding new data.
            var engine = mlContext.Model
                .CreatePredictionEngine<Data, Transformation>(model);
 
            var transformation = engine.Predict(new Data() { Value = "abc" });
 
            // Print transformation to console.
            Console.WriteLine("Value: {0}\t Key:{1}", transformation.Value,
                transformation.Key);
 
            // Value: abc       Key:1
 
        }
 
        private class Data
        {
            public string Value { get; set; }
        }
 
        private class Transformation
        {
            public string Value { get; set; }
            public uint Key { get; set; }
        }
    }
}