我有这些信息可以保存在基本神经网络模拟的变量中。
状态是激活级别,它是模拟期间唯一更改的值。这是一个未签名的浮动。
我想轻松获取当前节点的所有传入和所有传出关系。很容易,我的意思是非常好的表现。 (我有大约1,000,000个节点,平均每50个关系。)
我的程序的主要部分如下所示(伪代码)。
foreach(Node in Nodes)
{
Inputs[] = all incomeing relationships;
Node.State = sum of all Inputs[] elements;
Outputs[] = all outgoing relationships;
normalize all Outputs[] elements temporarly; // so that the sum of their weights is 1
foreach(Output in Outputs[])
{
Output.State = Node.State * Output.Weight;
}
}
我希望你明白我想做什么。如果不是,我会尝试更好地解释。
哪种类型的对象最适合其SourceNodeId 和通过TargetNodeId快速访问节点?
PS:使用Visual Studio在C#中编程。
答案 0 :(得分:0)
我认为带有节点+两个同步词典的列表会很快。
List<Node> allNodes;
Dictionary<Node,List<Node>> sourceTarget;
Dictionary<Node,List<Node>> targetSource;
我建议你将它们封装成单个对象...... 双向词典:
class TwoWayDictionary<T1,T2>
{
private Dictionary<T1,List<T2>> sourceTarget;
private Dictionary<T2,List<T1>> targetSource;
// Here shold be public methods and accessors ...
}