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))
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))
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)
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)
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))
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)
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)
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)
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], ))
# 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=",")
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=",")
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=",")
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=",")