public InputNode DeclareInput(string name, int vectorSize, string copyValueFrom = "")
        {
            InputNode node = new InputNode();

            node.NodeName   = name;
            node.ResultsDim = vectorSize;

            GraphNodeContext.AddNode(node);

            return(node);
        }
        public CopyValueFromNode DeclareCopyFrom(string name, int neuronsSize, string copyFromNodeName)
        {
            CopyValueFromNode node = new CopyValueFromNode();

            node.NodeName       = name;
            node.ResultsDim     = neuronsSize;
            node.TargetNodeName = copyFromNodeName;

            GraphNodeContext.AddNode(node);

            return(node);
        }
        public MultiplyNode DeclareMultiply(string name, params BaseComputeGraphNode[] parents)
        {
            MultiplyNode node = new MultiplyNode();

            node.NodeName = name;
            foreach (var n in parents)
            {
                node.Prevs.Add(n);
                n.Nexts.Add(node);
            }

            GraphNodeContext.AddNode(node);

            return(node);
        }
        public FCNode DeclareFC(string name, int inputDim, int neuronsSize, BaseComputeGraphNode inputNode)
        {
            FCNode node = new FCNode(inputDim, neuronsSize);

            node.NodeName = name;

            foreach (var n in new BaseComputeGraphNode[] { inputNode })
            {
                node.Prevs.Add(n);
                n.Nexts.Add(node);
            }

            GraphNodeContext.AddNode(node);

            return(node);
        }