mirror of
https://github.com/Findus23/collision-analyisis-and-interpolation.git
synced 2024-09-19 15:13:50 +02:00
69 lines
2.4 KiB
Python
69 lines
2.4 KiB
Python
|
import os
|
||
|
import random
|
||
|
|
||
|
import keras
|
||
|
import numpy as np
|
||
|
from keras import Sequential
|
||
|
from keras.engine.saving import load_model
|
||
|
from keras.layers import Dense
|
||
|
from keras.utils import plot_model
|
||
|
from matplotlib import pyplot as plt
|
||
|
|
||
|
from simulation import Simulation
|
||
|
from simulation_list import SimulationList
|
||
|
|
||
|
simulations = SimulationList.jsonlines_load()
|
||
|
|
||
|
random.shuffle(simulations.simlist)
|
||
|
train_data = simulations.simlist
|
||
|
test_data = simulations.simlist[800:]
|
||
|
|
||
|
sim: Simulation
|
||
|
print(np.array([[s.mcode, s.wpcode, s.wtcode, s.gammacode, s.alphacode, s.vcode] for s in train_data[:10]]))
|
||
|
X = np.array([[s.mcode, s.wpcode, s.wtcode, s.gammacode, s.alphacode, s.vcode] for s in train_data])
|
||
|
Y = np.array([s.water_retention_both for s in train_data])
|
||
|
X_test = np.array([[s.mcode, s.wpcode, s.wtcode, s.gammacode, s.alphacode, s.vcode] for s in test_data])
|
||
|
Y_test = np.array([s.water_retention_both for s in test_data])
|
||
|
tbCallBack = keras.callbacks.TensorBoard(log_dir='./logs', histogram_freq=0, batch_size=32, write_graph=True,
|
||
|
write_grads=False, write_images=False, embeddings_freq=0,
|
||
|
embeddings_layer_names=None, embeddings_metadata=None, embeddings_data=None,
|
||
|
update_freq='epoch')
|
||
|
|
||
|
if os.path.exists("model.hd5"):
|
||
|
model = load_model("model.hd5")
|
||
|
else:
|
||
|
|
||
|
model = Sequential()
|
||
|
model.add(Dense(6, input_dim=6, kernel_initializer='normal', activation='relu'))
|
||
|
model.add(Dense(4, kernel_initializer='normal', activation='relu'))
|
||
|
model.add(Dense(1, kernel_initializer='normal'))
|
||
|
model.compile(loss='mean_squared_error', optimizer='adam')
|
||
|
|
||
|
model.summary()
|
||
|
plot_model(model, "model.png", show_shapes=True, show_layer_names=True)
|
||
|
|
||
|
model.fit(X, Y, epochs=200, callbacks=[tbCallBack], validation_split=0.05)
|
||
|
|
||
|
loss = model.evaluate(X_test, Y_test)
|
||
|
print(loss)
|
||
|
|
||
|
model.save("model.hd5")
|
||
|
|
||
|
xrange = np.linspace(-0.5, 60.5, 100)
|
||
|
yrange = np.linspace(0.5, 5.5, 100)
|
||
|
xgrid, ygrid = np.meshgrid(xrange, yrange)
|
||
|
mcode = 24.
|
||
|
wpcode = 10
|
||
|
wtcode = 10
|
||
|
gammacode = 1
|
||
|
testinput = np.array([[mcode, wpcode, wtcode, gammacode, np.nan, np.nan]] * 100 * 100)
|
||
|
testinput[::, 4] = xgrid.flatten()
|
||
|
testinput[::, 5] = ygrid.flatten()
|
||
|
print(testinput)
|
||
|
print(testinput.shape)
|
||
|
testoutput = model.predict(testinput)
|
||
|
outgrid = np.reshape(testoutput, (100, 100))
|
||
|
|
||
|
plt.pcolormesh(xgrid, ygrid, outgrid, cmap="Blues", vmin=0, vmax=1)
|
||
|
plt.show()
|