我有這樣的代碼爲神經網絡庫我建立迭代Cython中的對象列表/集合的最快方法?
for connection in self.backwardConnections:
self._z += connection.value()
其中connection
是cdef class Connection
和backwardConnections
是連接蟒蛇list
。
我有兩個問題
- 什麼是通過Python列表最快的迭代? (我本來也可以用
for int i in range (len (..))
來完成) - 如果我放棄Python列表方法,什麼樣的集合類型(例如numpy數組,C++向量等)可以容納我的
Connection
對象並提高性能?
你在用這個值列表做更多的數學嗎?如果是這樣,你可以製作一個「numpy」數組,並對其進行操作。例如'values.sum()'。 'numpy'還有一個快速的'nditer'迭代器,可以在'cython中工作。 – hpaulj 2015-02-08 20:50:48
@hpaulj事情是'connection.value()'被定義爲'self.weight * self.source.y',其中'source'是'Neuron','Y'和'weight'是'double's。我基本上建立了一個使用神經元作爲節點和連接作爲頂點的網絡圖。在我能做的事情上,有2個cpp向量指向'w'和'y',它們可以以c速度迭代。 – 2015-02-09 18:57:58