def fit(self, x, y, learningRate=0.2, epochs=10000):
x = np.atleast_2d(x)
temp = np.ones([x.shape[0], x.shape[1]+1])
temp[:, 0:-1] = x
x = temp
for k in range(epochs):
i = np.random.randint(x.shape[0])
result = [x[i]]
for l in range(len(self._weights)):
result.append(self._activation(np.dot(result[l], self._weights[l])))
error = y[i] - result[-1]
deltas = [error * self._activationDeriv(result[-1])]
for l in range(len(self._weights)-1, 0, -1):
deltas.append(np.dot(self._weights[l], deltas[-1]) * self._activationDeriv(result[l]))
# deltas.append(deltas[-1].dot(self._weights[l].T) * self._activationDeriv(result[l]))
deltas.reverse()
for i in range(len(self._weights)):
layer = np.atleast_2d(result[i])
delta = np.atleast_2d(deltas[i])
self._weights[i] += learningRate * layer.T.dot(delta)
评论列表
文章目录