biases = [b + eta * db for b, db in zip(biases, dbs)]
+def train(images, labels, eta, batch_size=100):
+ '''Do backpropagation for smaller batches
+
+ This greatly speeds up the learning process, at the expense of finding a more erratic path to the local minimum.
+ '''
+ num_images = images.shape[1]
+ offset = 0
+ while offset < num_images:
+ images_batch = images[:, offset:offset + batch_size]
+ labels_batch = labels[offset:offset + batch_size]
+ backpropagate(images_batch, labels_batch, eta)
+ offset += batch_size
+
+
def test():
"""Count percentage of test inputs which are being recognized correctly"""
for i in range(1):
print(f"round #{i} of learning...")
- backpropagate(test_images, test_labels, 1)
+ train(test_images, test_labels, 1)
print(f'correctly recognized images: {test()}%')