Ejemplo n.º 1
0
 public static void AddNode(BaseComputeGraphNode node)
 {
     if (!allNodes.Contains(node))
     {
         allNodes.Add(node);
     }
 }
Ejemplo n.º 2
0
        private List <string> ParseDirections(BaseComputeGraphNode node)
        {
            List <string> results = new List <string>();

            foreach (var n in node.Prevs)
            {
                var key = string.Format("{0}-->{1}", n.NodeName, node.NodeName);
                if (!processedParses.ContainsKey(key))
                {
                    results.Add(string.Format("\"{0}\"->\"{1}\"", n.NodeName, node.NodeName));
                    processedParses.Add(key, true);
                }
            }

            foreach (var n in node.Nexts)
            {
                var key = string.Format("{1}-->{0}", n.NodeName, node.NodeName);
                if (!processedParses.ContainsKey(key))
                {
                    results.Add(string.Format("\"{0}\"->\"{1}\"", node.NodeName, n.NodeName));
                    processedParses.Add(key, true);
                }
            }

            return(results);
        }
        private void InitialBy(BaseComputeGraphNode targetNode)
        {
            int dim = targetNode.ResultsDim;

            InitialValue = new List <double>();
            for (var i = 0; i < dim; i++)
            {
                InitialValue.Add(Utils.Utils.GenerateRandomValue());
            }
        }
        private void VisitNode(BaseComputeGraphNode node)
        {
            node.ComputeResult();

            if (!node.IsProcessed)
            {
                return;
            }

            node.IsWalked = true;
        }
Ejemplo n.º 5
0
        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);
        }
        protected override List <double> Compute(List <List <double> > data)
        {
            //是否目标节点已经有计算的value了
            //      有:      RETURN VALUE
            //      没有:    初始化,RETURN VALUE
            BaseComputeGraphNode targetNode = GraphNodeContext.GetNode(this.TargetNodeName);

            if (targetNode.IsProcessed)
            {
                return(targetNode.ComputedResults);
            }
            else
            {
                if (InitialValue == null)
                {
                    InitialBy(targetNode);
                }

                return(InitialValue);
            }
        }