public static void Save(NnProject nnProject, string saveFolder) { // 使用默认或传递的文件夹? if (saveFolder.Length > 0) { nnProject.SaveFolder = saveFolder; } // 保存网络 string path = System.IO.Path.Combine(nnProject.SaveFolder, nnProject.ProjectName + ".ndn"); SaveNeuralNetwork(nnProject.Network, path); // 保存数据集 path = System.IO.Path.Combine(nnProject.SaveFolder, nnProject.ProjectName + ".trn"); SaveTrainingSet(nnProject.TrainingSet, path); if (nnProject.CrossValidationSet != null) { path = System.IO.Path.Combine(nnProject.SaveFolder, nnProject.ProjectName + ".crv"); SaveTrainingSet(nnProject.CrossValidationSet, path); } // 保存学习参数 path = System.IO.Path.Combine(nnProject.SaveFolder, nnProject.ProjectName + ".xml"); NnLearningParameters.Serialize(path, nnProject.LearningParameters); }
public static NnProject Load(string path) { NnProject nnProject = new NnProject(); nnProject.SaveFolder = System.IO.Path.GetDirectoryName(path); nnProject.ProjectName = System.IO.Path.GetFileName(path); nnProject.ProjectName = nnProject.ProjectName.Remove(nnProject.ProjectName.IndexOf('.')); // 加载网络 string path2 = System.IO.Path.Combine(nnProject.SaveFolder, nnProject.ProjectName + ".ndn"); nnProject.Network = (BackpropagationNetwork)LoadNeuralNetwork(path2); // 加载数据集 path2 = System.IO.Path.Combine(nnProject.SaveFolder, nnProject.ProjectName + ".trn"); nnProject.TrainingSet = LoadTrainingSet(path2); path2 = System.IO.Path.Combine(nnProject.SaveFolder, nnProject.ProjectName + ".crv"); if (File.Exists(path2)) { nnProject.CrossValidationSet = LoadTrainingSet(path2); } // 保存学习参数 path2 = System.IO.Path.Combine(nnProject.SaveFolder, nnProject.ProjectName + ".xml"); nnProject.LearningParameters = NnLearningParameters.Deserialize(path2); return(nnProject); }
public static void Serialize(string path, NnLearningParameters pms) { System.Xml.Serialization.XmlSerializer xs = new System.Xml.Serialization.XmlSerializer(typeof(NnProject.NnLearningParameters)); using (StreamWriter sw = new StreamWriter(path)) { xs.Serialize(sw, pms); } }