私は実行速度が非常に遅いニューラル ネットワークをコーディングしたので、特定のループを並列化することで少し速度を上げたいと考えていました。
実装とGILの仕組み、そしてそれが私に関係があるかどうかはわかりません。
コードは次のようになります。
class net():
def train(inputs)
...
for tset in batch:
self.backprop(tset, learn_rate)
def backprop(inputs):
...
for c, w in zip(n.inconnections, range(len(n.inconnections))):
c.current_error += n.current_error * n.inconnectionweights[w]
n.icweightupdates[w] += - learn_rate * n.current_error * c.activation
n.biasupdate += -learn_rate * n.current_error
ループは、独立して処理できる一連のトレーニング サンプル (20) が含まれてtrain()
いるため、並列化したいループです。batch