def accuracy(X, parametros, y, activacion="relu"):

    probs, caches = feed_foward_model(X, parametros, activacion)
    labels = (probs >= 0.5) * 1
    accuracy = np.mean(labels == y) * 100

    return accuracy
def gradiente_aprendisaje(X,
                          y,
                          dimensiones,
                          curvaaprendisaje=0.01,
                          num_iterations=200,
                          print_costo=True,
                          theta="relu",
                          initialization_method="he"):

    np.random.seed(1)

    costo_list = []

    if initialization_method == "zeros":
        parametros = inicializar_parametros_cero(dimensiones)
    elif initialization_method == "random":
        parametros = initialize_parameters_random(dimensiones)
    else:
        parametros = inicializar_parametros_2(dimensiones,
                                              initialization_method)

    for i in range(num_iterations):

        AL, caches = feed_foward_model(X, parametros, theta)
        costo = obtener_costo(AL, y)
        grados = modelo_backpropagation(AL, y, caches, theta)
        parametros = update_parametros(parametros, grados, curvaaprendisaje)
        if (i + 1) % 100 == 0 and print_costo:
            print(f"{i + 1} : {costo:.4f}")

        if i % 100 == 0:
            costo_list.append(costo)

    return parametros