How about using numpy?
Am 20.07.13 22:22, schrieb pablobarhamal...@gmail.com:
Ok, I'm working on a predator/prey simulation, which evolve using genetic algorithms. At
the moment, they use a quite simple feed-forward neural network, which can change size
over time. Each brain "tick" is performed by the following function (inside the
Brain class):
count = -1
for x in range(hidden_num):
temp = 0
for y in range(input_num):
count += 1
temp += inputs[y] * h_weight[count]
hidden[x] = 1/(1+e**(-temp))
I don't really understand this loop, but it looks to me like a
matrix-vector multiplication of the matrix of weights (indexed with a
single continous index) with the inputs.
Given that you reshape the weights() array correctly into a
hidden_num-by-input_num array, this would result in
import numpy as np
hidden = 1.0/(1.0 + np.exp(-np.dot(h_weights, inputs)))
The matrix-vector product is then executed by a compiled loop. You can
reshape your existing lists into that form by
inputs = np.array(inputs)
h_weight = np.reshape(h_weight, (hidden_num, input_num))
... but of course you should use this only to check whether you get the
correct result. You don't want to do that in the loop, instead, store
the weights always in matrix form.
Christian
--
http://mail.python.org/mailman/listinfo/python-list