根据其长度的分区拆分列表

时间:2014-05-19 06:21:11

标签: python neural-network partitioning

我有一个具有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]输入节点带到第二个隐藏节点等,不要将相同的输入节点发送到多个隐藏节点

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)