Example #1
0
        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());
        }
Example #2
0
        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]);
                }
            }
        }