public GenderComputation(NeuralNetwork network, int numberOfIterations = 1)
        {
            Contract.Requires(network != null);
            Contract.Requires(numberOfIterations > 0);

            Network = network;
            this.binaryOutput = network.OutputInterface.Length == 2;
            NumberOfIterations = numberOfIterations;
            VerifyNetwork();
            if (numberOfIterations != 1) resetHandler = new ResetHandler(Network, false);
        }
        public RecurrentNoiseRemoval(NeuralNetwork network, ImageBuffer source, double noiseLevel)
        {
            Contract.Requires(network != null);
            Contract.Requires(source != null);
            Contract.Requires(noiseLevel >= 0.0 && noiseLevel <= 1.0);

            Network = network;
            VerifyNetwork();
            Source = source;
            NoiseLevel = noiseLevel;
            Dest = new ImageBuffer(source.Width, source.Height);
            rNetwork = Network;
            gNetwork = Network.Clone();
            bNetwork = Network.Clone();
            rReset = new ResetHandler(rNetwork, false);
            gReset = new ResetHandler(gNetwork, false);
            bReset = new ResetHandler(bNetwork, false);
            size2 = Size / 2;
            swComp = new Stopwatch();
            swRemove = new Stopwatch();
            this.noiseLevel = ImgNoise.Features.Helpers.GetNoiseLevel(NoiseLevel);
        }