File: Experiment\ModelContainer.cs
Web Access
Project: src\src\Microsoft.ML.AutoML\Microsoft.ML.AutoML.csproj (Microsoft.ML.AutoML)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
using System.IO;
 
namespace Microsoft.ML.AutoML
{
    internal class ModelContainer
    {
        private readonly MLContext _mlContext;
        private readonly FileInfo _fileInfo;
        private readonly ITransformer _model;
 
        internal ModelContainer(MLContext mlContext, ITransformer model)
        {
            _mlContext = mlContext;
            _model = model;
        }
 
        internal ModelContainer(MLContext mlContext, FileInfo fileInfo, ITransformer model, DataViewSchema modelInputSchema)
        {
            _mlContext = mlContext;
            _fileInfo = fileInfo;
 
            // Write model to disk
            using (var fs = File.Create(fileInfo.FullName))
            {
                _mlContext.Model.Save(model, modelInputSchema, fs);
            }
        }
 
        public ITransformer GetModel()
        {
            // If model stored in memory, return it
            if (_model != null)
            {
                return _model;
            }
 
            // Load model from disk
            ITransformer model;
            using (var stream = new FileStream(_fileInfo.FullName, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                model = _mlContext.Model.Load(stream, out var modelInputSchema);
            }
            return model;
        }
    }
}