示例#1
0
        public AgentNetwork(FileInfo fileInfo)
        {
            fileInfo.Refresh();

            if (fileInfo.Exists == false)
            {
                throw new ArgumentException();
            }

            using (FileStream stream = fileInfo.OpenRead())
            {
                var layers     = NetworkSerializer.LoadLayers(new BinaryReader(stream));
                var viewRadius = AgentNetworkInputCoder.EncodedSizeToViewRadius(layers.First().Neurons.First().Weights.Length - 1);
                InputCoder = new AgentNetworkInputCoder(viewRadius);

                if (layers.Last().Neurons.Length != 1)
                {
                    throw new ArgumentException("Invalid neural network shape.");
                }

                if (layers.First().Neurons.First().Weights.Length - 1 != InputCoder.EncodedSize)
                {
                    throw new ArgumentException("Invalid neural network shape.");
                }

                Network = new Network(layers);
            }
        }