Por último debemos ejecutar nuestro código las "epochs" adecuadas. En este caso hay que comprobar si es necesario calcular la exactitud de la predicción o no tras cada una. En caso positivo calculamos la predicción sobre el dataframe x_test y la exactitud asociada (dividiendo el número de valores correctos entre el total):
for epoch in range(self.epochs):
if self.shuffle:
np.random.shuffle(training_data)
mini_batches = [training_data[start:start + self.batch_size]
for start in range(0, n, self.batch_size)]
for mini_batch in mini_batches:
self.__update_parameters(mini_batch)
if self.validation_split:
prediction = self.predict(x_test)
accuracy = sum(int(p == y) for (p, y) in zip(prediction, y_test)) / len(x_test)
print("Epoch {} complete. Accuracy: {:.4f}".format(epoch, accuracy))
else:
print("Epoch {} complete".format(epoch))