public static NetworkSnapshot Take(Network network)
        {
            var snapshot = new NetworkSnapshot();

            snapshot.initializeData(network);

            return snapshot;
        }
        internal NetworkInfo(NetworkSnapshot snapshot)
        {
            this.snapshot = snapshot;

            var layerSizes = new int[snapshot.Weights.Length + 1]; // +1 for input layer

            layerSizes[0] = snapshot.InputLayerSize;

            for (int i = layerSizes.Length - 1; i > 0; --i)
                layerSizes[i] = snapshot.Weights[i - 1].Length; // - bias

            this.LayerSizes = Array.AsReadOnly(layerSizes);
        }