Spaces:
Sleeping
Sleeping
Rui Wan commited on
Commit ·
8bf9a21
1
Parent(s): a106a7b
device update
Browse files- __pycache__/model_inverse.cpython-312.pyc +0 -0
- app.py +4 -4
- model_inverse.py +17 -17
__pycache__/model_inverse.cpython-312.pyc
CHANGED
|
Binary files a/__pycache__/model_inverse.cpython-312.pyc and b/__pycache__/model_inverse.cpython-312.pyc differ
|
|
|
app.py
CHANGED
|
@@ -22,10 +22,10 @@ def run_inverse_design(ply_number, a1, b1, c1, stress, n_restarts, epochs, use_l
|
|
| 22 |
"Cooling Time": float(best["input"][2]),
|
| 23 |
}
|
| 24 |
output_vals = {
|
| 25 |
-
"A1": float(best["output"][0]
|
| 26 |
-
"B1": float(best["output"][
|
| 27 |
-
"C1": float(best["output"][
|
| 28 |
-
"Stress": float(best["output"][
|
| 29 |
}
|
| 30 |
return input_vals, output_vals
|
| 31 |
|
|
|
|
| 22 |
"Cooling Time": float(best["input"][2]),
|
| 23 |
}
|
| 24 |
output_vals = {
|
| 25 |
+
"A1": float(best["output"][0]),
|
| 26 |
+
"B1": float(best["output"][1]),
|
| 27 |
+
"C1": float(best["output"][2]),
|
| 28 |
+
"Stress": float(best["output"][3]),
|
| 29 |
}
|
| 30 |
return input_vals, output_vals
|
| 31 |
|
model_inverse.py
CHANGED
|
@@ -3,7 +3,9 @@ import numpy as np
|
|
| 3 |
import matplotlib.pyplot as plt
|
| 4 |
from Dataset import Dataset
|
| 5 |
|
| 6 |
-
DEVICE = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
|
|
|
|
|
|
|
| 7 |
# Set global plotting parameters
|
| 8 |
plt.rcParams.update({'font.size': 14,
|
| 9 |
'figure.figsize': (10, 8),
|
|
@@ -77,11 +79,14 @@ def train_neural_network(model, inputs, outputs, optimizer, epochs=1000, lr_sche
|
|
| 77 |
|
| 78 |
|
| 79 |
def load_model(model_path):
|
| 80 |
-
checkpoint = torch.load(model_path)
|
| 81 |
model_config = checkpoint['model_config']
|
| 82 |
model = NeuralNetwork(model_config['layer_sizes'], dropout_rate=model_config['dropout_rate'])
|
| 83 |
model.load_state_dict(checkpoint['model_state_dict'])
|
| 84 |
print(f"Model loaded from {model_path}")
|
|
|
|
|
|
|
|
|
|
| 85 |
return model
|
| 86 |
|
| 87 |
def inverse_design(ply_number, y_target, n_restarts=20, epochs=1000, use_lbfgs=False):
|
|
@@ -95,8 +100,6 @@ def inverse_design(ply_number, y_target, n_restarts=20, epochs=1000, use_lbfgs=F
|
|
| 95 |
output_mean = torch.tensor(data.output_mean)
|
| 96 |
output_std = torch.tensor(data.output_std)
|
| 97 |
|
| 98 |
-
|
| 99 |
-
model.eval()
|
| 100 |
weights = torch.tensor([1.0, 1.0, 1.0, 0.0], dtype=torch.float32)
|
| 101 |
bounds = torch.tensor([[350., 450.], [100., 500.], [450., 550.]], dtype=torch.float32) # Initial_Temp, Punch_Velocity, Cooling_Time
|
| 102 |
best = {"loss": float('inf'), "input": None, "output": None}
|
|
@@ -132,7 +135,7 @@ def inverse_design(ply_number, y_target, n_restarts=20, epochs=1000, use_lbfgs=F
|
|
| 132 |
|
| 133 |
with torch.no_grad():
|
| 134 |
var = bounds[:, 0] + (bounds[:, 1] - bounds[:, 0]) * torch.sigmoid(z)
|
| 135 |
-
input_raw = torch.cat([torch.tensor([ply_number]), var])
|
| 136 |
input_norm = (input_raw - input_mean) / input_std
|
| 137 |
output_pred = model(input_norm)
|
| 138 |
output_pred = data.denormalize_output(output_pred.numpy())
|
|
@@ -232,18 +235,15 @@ def inverse_model():
|
|
| 232 |
# Error
|
| 233 |
|
| 234 |
# Save the model
|
| 235 |
-
model_save_path = './model_inverse_ckpt.pth'
|
| 236 |
-
model_config = {'layer_sizes': layer_sizes,
|
| 237 |
-
|
| 238 |
-
|
| 239 |
-
checkpoint = {
|
| 240 |
-
|
| 241 |
-
|
| 242 |
-
}
|
| 243 |
-
torch.save(checkpoint, model_save_path)
|
| 244 |
-
# Load the model
|
| 245 |
-
# model = NeuralNetwork(layer_sizes)
|
| 246 |
-
# model.load_state_dict(torch.load(model_save_path))
|
| 247 |
|
| 248 |
|
| 249 |
if __name__ == "__main__":
|
|
|
|
| 3 |
import matplotlib.pyplot as plt
|
| 4 |
from Dataset import Dataset
|
| 5 |
|
| 6 |
+
# DEVICE = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
|
| 7 |
+
DEVICE = torch.device('cpu')
|
| 8 |
+
|
| 9 |
# Set global plotting parameters
|
| 10 |
plt.rcParams.update({'font.size': 14,
|
| 11 |
'figure.figsize': (10, 8),
|
|
|
|
| 79 |
|
| 80 |
|
| 81 |
def load_model(model_path):
|
| 82 |
+
checkpoint = torch.load(model_path, map_location=DEVICE)
|
| 83 |
model_config = checkpoint['model_config']
|
| 84 |
model = NeuralNetwork(model_config['layer_sizes'], dropout_rate=model_config['dropout_rate'])
|
| 85 |
model.load_state_dict(checkpoint['model_state_dict'])
|
| 86 |
print(f"Model loaded from {model_path}")
|
| 87 |
+
|
| 88 |
+
model.to(DEVICE)
|
| 89 |
+
model.eval()
|
| 90 |
return model
|
| 91 |
|
| 92 |
def inverse_design(ply_number, y_target, n_restarts=20, epochs=1000, use_lbfgs=False):
|
|
|
|
| 100 |
output_mean = torch.tensor(data.output_mean)
|
| 101 |
output_std = torch.tensor(data.output_std)
|
| 102 |
|
|
|
|
|
|
|
| 103 |
weights = torch.tensor([1.0, 1.0, 1.0, 0.0], dtype=torch.float32)
|
| 104 |
bounds = torch.tensor([[350., 450.], [100., 500.], [450., 550.]], dtype=torch.float32) # Initial_Temp, Punch_Velocity, Cooling_Time
|
| 105 |
best = {"loss": float('inf'), "input": None, "output": None}
|
|
|
|
| 135 |
|
| 136 |
with torch.no_grad():
|
| 137 |
var = bounds[:, 0] + (bounds[:, 1] - bounds[:, 0]) * torch.sigmoid(z)
|
| 138 |
+
input_raw = torch.cat([torch.tensor([ply_number]), var])
|
| 139 |
input_norm = (input_raw - input_mean) / input_std
|
| 140 |
output_pred = model(input_norm)
|
| 141 |
output_pred = data.denormalize_output(output_pred.numpy())
|
|
|
|
| 235 |
# Error
|
| 236 |
|
| 237 |
# Save the model
|
| 238 |
+
# model_save_path = './model_inverse_ckpt.pth'
|
| 239 |
+
# model_config = {'layer_sizes': layer_sizes,
|
| 240 |
+
# 'dropout_rate': 0.05
|
| 241 |
+
# }
|
| 242 |
+
# checkpoint = {
|
| 243 |
+
# 'model_state_dict': model.state_dict(),
|
| 244 |
+
# 'model_config': model_config
|
| 245 |
+
# }
|
| 246 |
+
# torch.save(checkpoint, model_save_path)
|
|
|
|
|
|
|
|
|
|
| 247 |
|
| 248 |
|
| 249 |
if __name__ == "__main__":
|