def main():
    """ load training data"""
    inputs = np.loadtxt("../handwriting/X2_100samples.dat")
    targets = np.loadtxt("../handwriting/y2_100samples.dat")

    ValInputs, ValTargets = get_validation_data()
    """ define network topology """
    conec = mlgraph((inputs.shape[1], 10, 1))

    net = ffnet(conec)
    system = NNSystem(net, inputs, targets)

    pot = system.get_potential()

    database = system.create_database(
        db=
        "/home/ab2111/machine_learning_landscapes/neural_net/db_ffnet_100samples.sqlite"
    )
    # database = system.create_database(db="/home/ab2111/machine_learning_landscapes/neural_net/db_ffnet_me3.sqlite")
    # run_gui(system, database)

    #     check_its_a_minimum(system, database)

    energies = np.array([])
    for m in database.minima():
        coords = m.coords
        testenergy = pot.getValidationEnergy(coords, ValInputs,
                                             ValTargets) / len(ValTargets)
        energies = np.append(energies, testenergy)


#         plt.plot(m.coords,'o')
#         np.max(m.coords)

#     plt.plot([m._id for m in database.minima()], np.array([m.energy for m in database.minima()])/100., 'o')
    plt.plot(np.array([m.energy for m in database.minima()]) / 100)
    plt.plot(energies)
    plt.plot(
        np.array([np.max(m.coords) for m in database.minima()]) / 1000, 'x')

    plt.legend(["Etrain", "Evalidation", "max(params)"])
    plt.show()
def main():
    """ load training data"""
    inputs  = np.loadtxt("../handwriting/X2_100samples.dat")
    targets = np.loadtxt("../handwriting/y2_100samples.dat")    
    
    ValInputs, ValTargets = get_validation_data()

    """ define network topology """
    conec = mlgraph((inputs.shape[1],10,1))
    
    net = ffnet(conec)
    system = NNSystem(net, inputs, targets)
    
    pot = system.get_potential()
            
    database = system.create_database(db="/home/ab2111/machine_learning_landscapes/neural_net/db_ffnet_100samples.sqlite")
    # database = system.create_database(db="/home/ab2111/machine_learning_landscapes/neural_net/db_ffnet_me3.sqlite")
    # run_gui(system, database)
    
#     check_its_a_minimum(system, database)

    energies = np.array([])
    for m in database.minima():
        coords = m.coords
        testenergy = pot.getValidationEnergy(coords,ValInputs,ValTargets)/len(ValTargets)
        energies = np.append(energies,testenergy)
#         plt.plot(m.coords,'o')
#         np.max(m.coords)
         

#     plt.plot([m._id for m in database.minima()], np.array([m.energy for m in database.minima()])/100., 'o')
    plt.plot(np.array([m.energy for m in database.minima()])/100)
    plt.plot(energies)
    plt.plot(np.array([np.max(m.coords) for m in database.minima()])/1000, 'x')
    
    plt.legend(["Etrain","Evalidation","max(params)"])
    plt.show()