Пример #1
0
def validation_FEM(yname, angles, train_size):
    datafem = FEMData(yname, angles)
    # datafem = BerkovichData(yname)

    if train_size == 80:
        kf = RepeatedKFold(n_splits=5, n_repeats=2, random_state=0)
    elif train_size == 90:
        kf = KFold(n_splits=10, shuffle=True, random_state=0)
    else:
        kf = ShuffleSplit(n_splits=10,
                          test_size=len(datafem.X) - train_size,
                          random_state=0)

    mape = []
    iter = 0
    for train_index, test_index in kf.split(datafem.X):
        iter += 1
        print("\nCross-validation iteration: {}".format(iter))

        X_train, X_test = datafem.X[train_index], datafem.X[test_index]
        y_train, y_test = datafem.y[train_index], datafem.y[test_index]

        data = dde.data.DataSet(X_train=X_train,
                                y_train=y_train,
                                X_test=X_test,
                                y_test=y_test)

        mape.append(dde.apply(nn, (data, )))

    print(mape)
    print(yname, train_size, np.mean(mape), np.std(mape))
Пример #2
0
def validation_exp_cross3(yname):
    datalow = FEMData(yname, [70])
    dataBerkovich = BerkovichData(yname)
    dataexp1 = ExpData("../data/Al6061.csv", yname)
    dataexp2 = ExpData("../data/Al7075.csv", yname)

    ape = []
    y = []
    for _ in range(10):
        print("\nIteration: {}".format(len(ape)))
        data = dde.data.MfDataSet(
            X_lo_train=datalow.X,
            X_hi_train=np.vstack((dataBerkovich.X, dataexp1.X)),
            y_lo_train=datalow.y,
            y_hi_train=np.vstack((dataBerkovich.y, dataexp1.y)),
            X_hi_test=dataexp2.X,
            y_hi_test=dataexp2.y,
        )
        res = dde.apply(mfnn, (data, ))
        ape.append(res[:2])
        y.append(res[2])

    print(yname)
    print(np.mean(ape, axis=0), np.std(ape, axis=0))
    np.savetxt("y.dat", np.hstack(y))
Пример #3
0
def validation_exp_cross2(yname, train_size):
    datalow = FEMData(yname, [70])
    dataBerkovich = BerkovichData(yname)
    dataexp1 = ExpData("../data/B3067.csv", yname)
    dataexp2 = ExpData("../data/B3090.csv", yname)

    ape = []
    y = []

    kf = ShuffleSplit(n_splits=10, train_size=train_size, random_state=0)
    for train_index, _ in kf.split(dataexp1.X):
        print("\nIteration: {}".format(len(ape)))
        print(train_index)
        data = dde.data.MfDataSet(
            X_lo_train=datalow.X,
            X_hi_train=np.vstack((dataBerkovich.X, dataexp1.X[train_index])),
            y_lo_train=datalow.y,
            y_hi_train=np.vstack((dataBerkovich.y, dataexp1.y[train_index])),
            X_hi_test=dataexp2.X,
            y_hi_test=dataexp2.y,
        )
        res = dde.apply(mfnn, (data, ))
        ape.append(res[:2])
        y.append(res[2])

    print(yname, train_size)
    print(np.mean(ape, axis=0), np.std(ape, axis=0))
    np.savetxt(yname + ".dat", np.hstack(y).T)
Пример #4
0
def validation_exp_cross(yname):
    datalow = FEMData(yname, [70])
    dataBerkovich = BerkovichData(yname)
    dataexp = ExpData("../data/B3067.csv", yname)
    train_size = 10

    ape = []
    y = []

    # cases = range(6)
    # for train_index in itertools.combinations(cases, 3):
    #     train_index = list(train_index)
    #     test_index = list(set(cases) - set(train_index))

    kf = ShuffleSplit(n_splits=10,
                      test_size=len(dataexp.X) - train_size,
                      random_state=0)
    for train_index, test_index in kf.split(dataexp.X):
        print("\nIteration: {}".format(len(ape)))
        print(train_index, "==>", test_index)
        data = dde.data.MfDataSet(
            X_lo_train=datalow.X,
            X_hi_train=np.vstack((dataBerkovich.X, dataexp.X[train_index])),
            y_lo_train=datalow.y,
            y_hi_train=np.vstack((dataBerkovich.y, dataexp.y[train_index])),
            X_hi_test=dataexp.X[test_index],
            y_hi_test=dataexp.y[test_index],
        )
        res = dde.apply(mfnn, (data, ))
        ape.append(res[:2])
        y.append(res[2])

    print(yname)
    print(np.mean(ape, axis=0), np.std(ape, axis=0))
    np.savetxt(yname + ".dat", np.hstack(y).T)
Пример #5
0
def validation_mf(yname, train_size):
    datalow = FEMData(yname, [70])
    # datalow = ModelData(yname, 10000, "forward_n")
    datahigh = BerkovichData(yname)
    # datahigh = FEMData(yname, [70])

    kf = ShuffleSplit(n_splits=10,
                      test_size=len(datahigh.X) - train_size,
                      random_state=0)
    # kf = LeaveOneOut()

    mape = []
    iter = 0
    for train_index, test_index in kf.split(datahigh.X):
        iter += 1
        print("\nCross-validation iteration: {}".format(iter), flush=True)

        data = dde.data.MfDataSet(
            X_lo_train=datalow.X,
            X_hi_train=datahigh.X[train_index],
            y_lo_train=datalow.y,
            y_hi_train=datahigh.y[train_index],
            X_hi_test=datahigh.X[test_index],
            y_hi_test=datahigh.y[test_index],
        )
        mape.append(dde.apply(mfnn, (data, ))[0])
        # mape.append(dde.apply(mfgp, (data,)))

    print(mape)
    print(yname, train_size, np.mean(mape), np.std(mape))
Пример #6
0
def validation_exp(yname):
    datalow = FEMData(yname, [70])
    dataBerkovich = BerkovichData(yname)
    dataexp = ExpData("../data/B3067.csv", yname)

    ape = []
    y = []
    for iter in range(10):
        print("\nIteration: {}".format(iter))
        data = dde.data.MfDataSet(
            X_lo_train=datalow.X,
            X_hi_train=dataBerkovich.X,
            y_lo_train=datalow.y,
            y_hi_train=dataBerkovich.y,
            X_hi_test=dataexp.X,
            y_hi_test=dataexp.y,
        )
        res = dde.apply(mfnn, (data, ))
        ape.append(res[:2])
        y.append(res[2])

    print(yname)
    print(np.mean(ape, axis=0), np.std(ape, axis=0))
    np.savetxt(yname + ".dat", np.hstack(y).T)
Пример #7
0
if directory_1.exists() and directory_1.is_dir():
    shutil.rmtree(directory_1)

if directory_2.exists() and directory_2.is_dir():
    shutil.rmtree(directory_2)

#os.mkdir(directory_1)
os.mkdir(directory_2)

# Network Training
for i in range(len(ds)):
    l2_differences_u_0[i], l2_differences_v_0[i], l2_differences_w_0[
        i], l2_differences_p_0[i], residuals_0[i], l2_differences_u_1[
            i], l2_differences_v_1[i], l2_differences_w_1[
                i], l2_differences_p_1[i], residuals_1[i], times[i], epochs[
                    i] = dde.apply(train_source_model, (ds[i], ))

# Print Information
print("At the beginning: ")
print("Residuals: ", residuals_0)
print("Relative L2 Difference u: ", l2_differences_u_0)
print("Relative L2 Difference v: ", l2_differences_v_0)
print("Relative L2 Difference w: ", l2_differences_w_0)
print("Relative L2 Difference p: ", l2_differences_p_0)
print("\n")
print("In the end: ")
print("Residuals: ", residuals_1)
print("Relative L2 Difference u: ", l2_differences_u_1)
print("Relative L2 Difference v: ", l2_differences_v_1)
print("Relative L2 Difference w: ", l2_differences_w_1)
print("Relative L2 Difference p: ", l2_differences_p_1)
Пример #8
0
    ax = plt.axes(projection="3d")
    ax.plot_wireframe(x[:, :, z_index], y[:, :, z_index], p_pred_0[:, :,
                                                                   z_index])
    ax.set_xlabel('location x')
    ax.set_ylabel('location y')
    ax.set_zlabel('p')
    plt.tight_layout()
    plt.savefig('Predictions/Predicted_solution_p_d_{}_t_0.png'.format(d),
                dpi=300)

    plt.figure(7)
    ax = plt.axes(projection="3d")
    ax.plot_wireframe(x[:, :, z_index], y[:, :, z_index], p_pred_1[:, :,
                                                                   z_index])
    ax.set_xlabel('location x')
    ax.set_ylabel('location y')
    ax.set_zlabel('p')
    plt.tight_layout()
    plt.savefig('Predictions/Predicted_solution_p_d_{}_t_1.png'.format(d),
                dpi=300)

    return


### Main file ###
# Vizualizations
for i in range(len(ds_source)):
    dde.apply(visualize_solution, (
        ds_source[i],
        epochs_source[i],
    ))
if directory.exists() and directory.is_dir():
    shutil.rmtree(directory)

os.mkdir(directory)

# Network Training
for i in range(len(ds_target)):
    for j in range(number_of_strategies):
        l2_differences_u_0[i, j], l2_differences_v_0[i, j], l2_differences_w_0[
            i, j], l2_differences_p_0[i, j], residuals_0[
                i, j], l2_differences_u_1[i, j], l2_differences_v_1[
                    i, j], l2_differences_w_1[i, j], l2_differences_p_1[
                        i, j], residuals_1[i, j], similarities[i, j], times[
                            i, j] = dde.apply(train_target_model, (
                                ds_source,
                                epochs_source,
                                ds_target[i],
                                j,
                            ))

# Print Information
print("At the beginning: ")
print("Residuals: ", residuals_0)
print("Relative L2 Difference u: ", l2_differences_u_0)
print("Relative L2 Difference v: ", l2_differences_v_0)
print("Relative L2 Difference w: ", l2_differences_w_0)
print("Relative L2 Difference p: ", l2_differences_p_0)
print("\n")
print("In the end: ")
print("Residuals: ", residuals_1)
print("Relative L2 Difference u: ", l2_differences_u_1)
print("Relative L2 Difference v: ", l2_differences_v_1)
Пример #10
0
    u_exact = data['usol'].T
    x_test, t_test = np.meshgrid(np.linspace(x_min, x_max, test_points_x),
                                 np.linspace(t_min, t_max, test_points_t))
    X = np.vstack((np.ravel(x_test), np.ravel(t_test))).T

    # Reload model and make predictions
    model_name = 'Neural_Networks/nu_{}/Burger_Equation_Source_Model_nu_{}-{}'.format(
        nus[i], nus[i], epochs_source[i])
    model.compile("adam", lr=learning_rate)
    model.train(model_restore_path=model_name, epochs=0)

    u_pred = model.predict(X).reshape(test_points_t, test_points_x)
    f = model.predict(X, operator=pde)

    ax = plt.axes(projection="3d")
    ax.plot_wireframe(x_test, t_test, u_pred)
    ax.set_xlabel('location x')
    ax.set_ylabel('time t')
    ax.set_zlabel('u')
    plt.tight_layout()
    plt.savefig('Predictions/Predicted_solution_nu_{}.png'.format(nus[i]),
                dpi=300)

    return


### Main file ###
# Vizualizations
for i in range(len(nus)):
    dde.apply(visualize_solution, (nus[i], ))
Пример #11
0
# Foder Structure
directory_1 = Path('Neural_Networks')
directory_2 = Path('Results')

if directory_1.exists() and directory_1.is_dir():
    shutil.rmtree(directory_1)

if directory_2.exists() and directory_2.is_dir():
    shutil.rmtree(directory_2)

os.mkdir(directory_1)
os.mkdir(directory_2)

# Network Training
for i in range(len(nus_target)):
    for j in range(number_of_strategies):
        l2_differences[i, j], residuals[i, j], similarities[i, j], times[
            i, j] = dde.apply(train_target_model,
                              (nus_source, epochs_source, nus_target[i], j))

# Print Information
print("Residuals: ", residuals)
print("L2 differences: ", l2_differences)
print("Similarities: ", similarities)
print("Times: ", times)

# Tables
np.savetxt("Results/residuals.csv", residuals, delimiter=",")
np.savetxt("Results/l2_differences.csv", l2_differences, delimiter=",")
np.savetxt("Results/similarities.csv", similarities, delimiter=",")
np.savetxt("Results/times.csv", times, delimiter=",")
Пример #12
0
directory = Path('Results')

if directory.exists() and directory.is_dir():
    shutil.rmtree(directory)

os.mkdir(directory)

# Network Training
for i in range(len(Res_target)):
    for j in range(number_of_strategies):
        l2_differences_u[i, j], l2_differences_v[i, j], l2_differences_p[
            i, j], residuals[i, j], similarities[i,
                                                 j], times[i, j] = dde.apply(
                                                     train_target_model, (
                                                         Res_source,
                                                         epochs_source,
                                                         Res_target[i],
                                                         j,
                                                     ))

# Print Information
print("Residuals: ", residuals)
print("Relative L2 Difference u: ", l2_differences_u)
print("Relative L2 Difference v: ", l2_differences_v)
print("Relative L2 Difference p: ", l2_differences_p)
print("Similarities: ", similarities)
print("Times: ", times)

# Tables
np.savetxt("Results/residuals.csv", residuals, delimiter=",")
np.savetxt("Results/l2_differences_u.csv", l2_differences_u, delimiter=",")
Пример #13
0
    plt.savefig('Predictions/Predicted_solution_u_Re_{}.png'.format(Re),
                dpi=300)

    plt.figure(2)
    ax = plt.axes(projection="3d")
    ax.plot_wireframe(x_test, y_test, v_pred)
    ax.set_xlabel('location x')
    ax.set_ylabel('location y')
    ax.set_zlabel('v')
    plt.tight_layout()
    plt.savefig('Predictions/Predicted_solution_v_Re_{}.png'.format(Re),
                dpi=300)

    plt.figure(2)
    ax = plt.axes(projection="3d")
    ax.plot_wireframe(x_test, y_test, p_pred)
    ax.set_xlabel('location x')
    ax.set_ylabel('location y')
    ax.set_zlabel('p')
    plt.tight_layout()
    plt.savefig('Predictions/Predicted_solution_p_Re_{}.png'.format(Re),
                dpi=300)

    return


### Main file ###
# Vizualizations
for i in range(len(Res_source)):
    dde.apply(visualize_solution, (Res_source[i], ))
directory_1 = Path('Neural_Networks')
directory_2 = Path('Results')

if directory_1.exists() and directory_1.is_dir():
    shutil.rmtree(directory_1)

if directory_2.exists() and directory_2.is_dir():
    shutil.rmtree(directory_2)

os.mkdir(directory_1)
os.mkdir(directory_2)

# Network Training
for i in range(len(Res)):
    l2_differences_u[i], l2_differences_v[i], l2_differences_p[i], residuals[
        i], times[i], epochs[i] = dde.apply(train_source_model, (Res[i], ))

# Print Information
print("Residuals: ", residuals)
print("Relative L2 Difference u: ", l2_differences_u)
print("Relative L2 Difference v: ", l2_differences_v)
print("Relative L2 Difference p: ", l2_differences_p)
print("Times: ", times)

# Tables
np.savetxt("Results/residuals.csv", residuals, delimiter=",")
np.savetxt("Results/l2_differences_u.csv", l2_differences_u, delimiter=",")
np.savetxt("Results/l2_differences_v.csv", l2_differences_v, delimiter=",")
np.savetxt("Results/l2_differences_p.csv", l2_differences_p, delimiter=",")
np.savetxt("Results/times.csv", times, delimiter=",")
np.savetxt("Neural_Networks/epochs.csv", epochs, delimiter=",")
Пример #15
0
times = np.zeros(len(nus))
epochs = np.zeros(len(nus))

# Folder Structure
directory_1 = Path('Neural_Networks')
directory_2 = Path('Results')

if directory_1.exists() and directory_1.is_dir():
    shutil.rmtree(directory_1)

if directory_2.exists() and directory_2.is_dir():
    shutil.rmtree(directory_2)

os.mkdir(directory_1)
os.mkdir(directory_2)

# Network Training
for i in range(len(nus)):
    l2_differences[i], residuals[i], times[i], epochs[i] = dde.apply(
        train_source_model, (nus[i], ))

# Print Information
print("Residuals: ", residuals)
print("L2 differences: ", l2_differences)
print("Times: ", times)

# Tables
np.savetxt("Results/residuals.csv", residuals, delimiter=",")
np.savetxt("Results/l2_differences.csv", l2_differences, delimiter=",")
np.savetxt("Results/times.csv", times, delimiter=",")
np.savetxt("Neural_Networks/epochs.csv", epochs, delimiter=",")