/// <summary> /// Serialization constructor /// </summary> public TrainedModel(SerializationInfo info, StreamingContext context) { Properties = (ModelProperties)info.GetValue(nameof(Properties), typeof(ModelProperties)); ItemIdIndex = (string[])info.GetValue(nameof(ItemIdIndex), typeof(string[])); byte[] sarModelBytes = (byte[])info.GetValue(nameof(RecommenderData), typeof(byte[])); using (var stream = new MemoryStream(sarModelBytes)) { using (var environment = new TlcEnvironment(verbose: true)) { IPredictor predictor = ModelFileUtils.LoadPredictorOrNull(environment, stream); RecommenderData = new ModelRecommenderData(predictor as IUserHistoryToItemsRecommender); } } }
/// <summary> /// Creates a new instance of the <see cref="TrainedModel"/> class. /// </summary> /// <param name="predictorModel">The predictor model</param> /// <param name="properties">The model properties</param> /// <param name="itemIdIndex">The indexed item ids </param> internal TrainedModel(IPredictorModel predictorModel, ModelProperties properties, string[] itemIdIndex) { if (predictorModel == null) { throw new ArgumentNullException(nameof(predictorModel)); } if (properties == null) { throw new ArgumentNullException(nameof(properties)); } if (itemIdIndex == null) { throw new ArgumentNullException(nameof(itemIdIndex)); } _predictorModel = predictorModel; RecommenderData = new ModelRecommenderData(_predictorModel.Predictor as IUserHistoryToItemsRecommender); Properties = properties; ItemIdIndex = itemIdIndex; }