public static string SaveParams(this NeuralNetwork network) { if (network == null) { throw new ArgumentNullException(nameof(network)); } var sb = new StringBuilder(); using (var it = new NeuralIterator()) { for (var param = it.Begin(network); param != null; param = it.Next()) { sb.Append($"{it.CurrentParam}:"); var data = param.GetData(); for (var i = 0u; i < data.Length; ++i) { sb.Append($" {data[i]}"); } sb.AppendLine(); } } return(sb.ToString()); }
public static void LoadParams(this NeuralNetwork network, string parameters) { if (network == null) { throw new ArgumentNullException(nameof(network)); } var lines = parameters.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); var vals = new float[lines.Length][]; for (var ln = 0; ln < lines.Length; ++ln) { var line = lines[ln]; var s1 = line.Split(':'); var i = Convert.ToUInt32(s1[0]); var svals = s1[1].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); vals[i] = new float[svals.Length]; for (var v = 0u; v < svals.Length; ++v) { vals[i][v] = Convert.ToSingle(svals[v]); } } using (var it = new NeuralIterator()) { for (var param = it.Begin(network); param != null; param = it.Next()) { param.Transfer(vals[it.CurrentParam]); } } }