我正在用Java创建一个循环的神经网络框架,我很难决定是将连接信息加载到神经元上还是加载到网络类本身上。我正在考虑的两个设计如下:
1)类网络包含节点类列表(顶点列表)。为了运行神经网络,网络类激活连接到输入节点的所有节点,并使用顶点列表连续激活相邻节点,直到所有路径都汇聚在输出节点上。
2)类网络包含节点列表。每个节点都包含它所连接的输入节点列表。为了运行神经网络,网络类激活输出节点,递归激活相邻节点并返回输出。
我正在实施NEAT算法,所以没有反向传播来处理。 第一种选择似乎更复杂,第二种选择似乎是一种糟糕的架构选择,可能导致大量的冗余计算。
我想知道我是否接近这一切都是错误的,或者至少如果这两个选项中有明显的胜利者。
答案 0 :(得分:0)
恕我直言,我可以选择第一个选项。我同意第二个听起来不是一个糟糕的选择。请记住OO隐藏复杂性(将其隐藏在某人可以说的类中)并不是任何人都知道使用对象/类本身所必需的。在一个理想的世界中,一个好的OO实现需要更多的工作来从头开始构建,但不是更复杂,并且获得更易于维护和理解的好处。