所以我需要让径向基函数运行得更快一点
while(error):
epoch += 1
error = 0
for i in xrange(self.numPoints):
dp = self.dotProduct(g[i], self.weights)
signum = self.sig(dp)
if dp < 0 and g[i].classification == 1:
self.updateWeights(signum, g[i])
error += 1
elif dp > 0 and g[i].classification == -1:
self.updateWeights(signum, g[i])
error += 1
elif dp == 0:
self.updateWeights(signum, g[i])
error += 1
if epoch > 10000:
return 0
print "Epochs %i, %i Dimensions" % (epoch, self.numWeights - 1)
return 1
def dotProduct(self, x, y):
ret = 0.0
for i in xrange(len(y)):
ret += x.points[i]*y[i]
return ret
def sig(self, x):
if x < 0:
return 1
if x > 0:
return -1
else:
return 0
def updateWeights(self, s, g):
for i in xrange(self.numWeights):
self.weights[i] = self.weights[i] + self.learningRate * s * g.points[i]
我想使用并发线程,但python线程锁定线程,直到前一个线程完成,所以它不会使它比运行单个主线程更快。
我需要找到一种同时运行线程的方法,每个线程都有一个线程:for i in xrange(self.numPoints): 但是锁定 self.weights 的值,这意味着一次只有一个线程可以更改它们。
任何人都知道如何做到这一点?
这在小型数据集上效果很好,但是在使用真实数据时会有点麻烦