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); } }