public override XmlElement Save(XmlDocument doc, object o) { if (o == null) { return(null); } if (!(o is Trainer trainer)) { throw new Exception("Codec must be Trainer!"); } var el = GetRootElement(doc); XmlStorage.AddChild(el, "Mission", trainer.Mission); XmlStorage.AddChild(el, "BatchSize", trainer.BatchSize); XmlStorage.AddChild(el, "Epoch", trainer.Epoch); XmlStorage.AddChild(el, "RandomBatch", trainer.RandomBatch.ToString()); XmlStorage.AddChild(el, "PrintSteps", trainer.PrintSteps); XmlStorage.AddChild(el, "LastTrainLoss", trainer.LastTrainLoss); XmlStorage.AddChild(el, "LastTrainAccuracy", trainer.LastTrainAccuracy); XmlStorage.AddChild(el, "LastTestLoss", trainer.LastTestLoss); XmlStorage.AddChild(el, "LastTestAccuracy", trainer.LastTestAccuracy); XmlStorage.AddObjectChild(el, "PreProcessor", trainer.PreProcessor); XmlStorage.AddObjectChild(el, "LabelCodec", trainer.LabelCodec); XmlStorage.AddObjectChild(el, "Normalizer", trainer.Normalizer); XmlStorage.AddObjectChild(el, "Model", trainer.Model); return(el); }