public static void AddNode(BaseComputeGraphNode node) { if (!allNodes.Contains(node)) { allNodes.Add(node); } }
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; }
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); } }