public ActivationLayerBackwardCompute(ActivationLayerForwardCompute forwardCompute, ConnectedLayer connectedLayer)
            : base(forwardCompute, connectedLayer)
        {
            Contract.Requires(forwardCompute != null);
            Contract.Requires(connectedLayer != null);
            Contract.Requires((connectedLayer.StructuralElementFlags & NNStructuralElement.BackwardImplementation) != 0 &&
                (connectedLayer.StructuralElementFlags & NNStructuralElement.GradientInformation) != 0);

            Function = forwardCompute.Function;
        } 
        private LayerForwardCompute CreateLayerForwardCompute(ConnectedLayer clayer, ManagedNNInitParameters initPars)
        {
            LayerForwardCompute result = null;
            if (clayer.Layer is ActivationLayer)
            {
                result = new ActivationLayerForwardCompute(clayer);
            }
            
            if (result == null) throw new InvalidOperationException("Cannot build Managed Neural Network, because '" + clayer.Layer.GetType().FullName + "' layer type is unknown.");

            result.RunParallel = initPars.RunParallel;

            return result;
        }