/// <summary>
        /// Create an 'Input' Variable denoting sparse data and specify if gradients are to be computed for this input
        /// </summary>
        /// <param name="shape"></param>
        /// <param name="isSparse"></param>
        /// <param name="dataType"></param>
        /// <param name="needsGradient"></param>
        /// <param name="name"></param>
        /// <param name="dynamicAxes"></param>
        /// <returns></returns>
        public static Variable InputVariable(NDShape shape, DataType dataType, string name = "", IList <Axis> dynamicAxes = null, bool isSparse = false, bool needsGradient = false)
        {
            if (dynamicAxes == null)
            {
                dynamicAxes = Axis.DefaultInputVariableDynamicAxes();
            }
            AxisVector dynamicAxesVector = Helper.AsAxisVector(dynamicAxes);

            return(CNTKLib.InputVariable(shape, isSparse, dataType, needsGradient, name, dynamicAxesVector));
        }