神经网络(4)

来源:互联网 发布:java移植安卓游戏 编辑:程序博客网 时间:2024/06/05 08:50
if test_data: n_test = len(test_data)    n = len(training_data)    for j in xrange(epochs):        random.shuffle(training_data)        mini_batches = [training_data[k:k+mini_batch_size] for k in xrange(0, n, mini_batch_size)]        for mini_batch in mini_batches:            self.update_all_weights_and_bias_using_one_mini_batch(mini_batch, eta)        if test_data:            print "Epoch {0}: {1} / {2}".format(j, self.evaluate(test_data), n_test)        else:            print "Epoch {0} complete".format(j)def backprop(self, x, y):    """Return a tuple ``(nabla_b, nabla_w)`` representing the    gradient for the cost function C_x.  ``nabla_b`` and    ``nabla_w`` are layer-by-layer lists of numpy arrays, similar    to ``self.biases`` and ``self.weights``."""    nabla_b = [np.zeros(b.shape) for b in self.biases]    nabla_w = [np.zeros(w.shape) for w in self.weights]    # feedforward pass    # we calculate for each data x the final output of the output layer    # the propagation is forward    # the activation of the first layer, a.k.a the input layer, is the input data x    activation = x    # list to store all the activations, layer by layer    activations = [x]    zs = [] # list to store all the z vectors, layer by layer    for b, w in zip(self.biases, self.weights):        z = np.dot(w, activation)+b        zs.append(z)        activation = sigmoid_vec(z)        activations.append(activation)
0 0