Parámetro validation_split

Para esto, vamos a modificar el constructor de nuestra clase de forma que acepte un nuevo parámetro, validation_split que, por defecto tomará el valor None. Este parámetro contendrá un número real entre 0 y 1 que determinará el porcentaje de los datos de entrenamiento a dedicar a validación.

Nuestro constructor quedará, por lo tanto, de la siguiente forma:

def __init__(self, sizes, learning_rate = 0.01, batch_size = 16, epochs = 10, shuffle = True,
            validation_split = None):
    """ Constructor de la red neuronal """
    self.num_layers = len(sizes)         # Número total de capas de la red
    self.sizes = sizes                   # Lista conteniendo el número de neuronas por capa
    self.learning_rate = learning_rate   # Tasa de aprendizaje
    self.batch_size = batch_size         # Tamaño del batch
    self.epochs = epochs                 # Número de epochs durante los que entrenar la red
    self.weights = [np.random.randn(x, y) for (x, y) in zip(sizes[1:], sizes[:-1])]
    self.biases = [np.random.randn(n, 1) for n in sizes[1:]]
    self.shuffle = shuffle               # Si toma el valor True, se desordenará el dataset
    self.validation_split = validation_split   # Porcentaje de muestras para validación