我有一个具有n个输入节点和k个隐藏节点的神经网络,其中k <&lt;&lt; n,我试图将大约(n / k)个输入节点带到1个隐藏节点。你不需要了解神经网络,只需要考虑边缘和节点。我已经有了分区,它是一个总和为n的k数列表。这是我能提出的最佳算法
k = 0
c = 0
for inputNode in inputNodes:
Edge(inputNode, hiddenNodes[k])
c += 1
if c % partition[k] is 0:
k += 1
c = 0
我认为我们都同意这是一些丑陋的代码,但我花了一些时间试图想出一个更好的方法而且我无法做到,我怎么能做得更好呢?感谢。
partition
是一个数字列表,总和为inputNodes
的长度。我要做的是将partition[0]
输入节点带到第一个隐藏节点,将partition[1]
输入节点带到第二个隐藏节点等,不要将相同的输入节点发送到多个隐藏节点
答案 0 :(得分:1)
而不是循环遍历inputNodes
,循环partition
并使用迭代器逐个从inputNodes
绘制节点可能更清楚:
node_iterator = iter(inputNodes)
for hiddenNode, count in zip(hiddenNodes, partition):
for _ in xrange(count):
Edge(next(node_iterator), hiddenNode)