Skip to content

Commit 0bacb38

Browse files
Merge pull request #9 from Yaroslav-Muravev/just_try
Add verbose display as parametr for DeepXDE
2 parents 24585ca + 05b7c20 commit 0bacb38

4 files changed

Lines changed: 31 additions & 19 deletions

File tree

.github/workflows/test-functional.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
fail-fast: false
1818
matrix:
1919
python-version: ["3.11"]
20-
operator: ["L2LRFitness"]
20+
operator: ["DeepXDEBasedFitness"]
2121
split: [1, 2, 3, 4]
2222

2323
steps:

epde/integrate/deepxde_integration.py

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,9 @@ def func(x):
6262
num_boundary=adapter.num_boundary,
6363
num_test=500)
6464

65-
layer_size = [1] + adapter.net + [len(var_names)]
66-
net = dde.nn.FNN(layer_size, adapter.activation, adapter.kernel_initializer)
67-
model = dde.Model(data_obj, net)
68-
model.compile(adapter.optimizer, lr=adapter.lr)
65+
model = adapter._get_or_create_model(data_obj, dim=1, var_count=len(var_names))
6966
try:
70-
losshistory, train_state = model.train(epochs=adapter.epochs)
67+
losshistory, train_state = model.train(iterations=adapter.iterations, verbose=adapter.verbose)
7168
final_loss = float(
7269
losshistory.loss_train[-1][0]) if losshistory.loss_train else np.nan
7370
except Exception as e:
@@ -140,12 +137,9 @@ def func(x):
140137
num_initial=adapter.num_initial,
141138
num_test=500)
142139

143-
layer_size = [geomtime.dim] + adapter.net + [len(var_names)]
144-
net = dde.nn.FNN(layer_size, adapter.activation, adapter.kernel_initializer)
145-
model = dde.Model(data_obj, net)
146-
model.compile(adapter.optimizer, lr=adapter.lr)
140+
model = adapter._get_or_create_model(data_obj, dim=2, var_count=len(var_names))
147141
try:
148-
losshistory, train_state = model.train(epochs=adapter.epochs) # <-- ИСПРАВЛЕНО
142+
losshistory, train_state = model.train(iterations=adapter.iterations, verbose=adapter.verbose) # <-- ИСПРАВЛЕНО
149143
final_loss = float(losshistory.loss_train[-1][0]) if losshistory.loss_train else np.nan
150144
except Exception as e:
151145
print(f"Exception: {e}")
@@ -233,12 +227,9 @@ def func(x):
233227
num_initial=adapter.num_initial,
234228
num_test=500)
235229

236-
layer_size = [geomtime.dim] + adapter.net + [len(var_names)]
237-
net = dde.nn.FNN(layer_size, adapter.activation, adapter.kernel_initializer)
238-
model = dde.Model(data_obj, net)
239-
model.compile(adapter.optimizer, lr=adapter.lr)
230+
model = adapter._get_or_create_model(data_obj, dim=3, var_count=len(var_names))
240231
try:
241-
losshistory, train_state = model.train(epochs=adapter.epochs) # <-- ИСПРАВЛЕНО
232+
losshistory, train_state = model.train(iterations=adapter.iterations, verbose=adapter.verbose) # <-- ИСПРАВЛЕНО
242233
final_loss = float(losshistory.loss_train[-1][0]) if losshistory.loss_train else np.nan
243234
except Exception as e:
244235
print(f"Exception: {e}")
@@ -263,10 +254,12 @@ def __init__(self, pretrained_net=None, **config):
263254
self.num_domain = int(self.config.get('num_domain', 2000))
264255
self.num_boundary = int(self.config.get('num_boundary', 500))
265256
self.num_initial = int(self.config.get('num_initial', 500))
266-
self.epochs = int(self.config.get('epochs', 10000))
257+
#self.epochs = int(self.config.get('epochs', 10000))
258+
self.iterations = int(self.config.get('iterations', 10000))
267259
# self.iterations = int(self.config.get('epochs', 5))
268260
self.bc_type = self.config.get('bc_type', 'Dirichlet')
269261
self.fallback_bc_value = self.config.get('fallback_bc_value', 0.0)
262+
self.verbose = config.get('verbose', False)
270263

271264
self.coordinate_mapping = self.config.get('coordinate_mapping', None)
272265
self.coord_names = None
@@ -278,6 +271,23 @@ def __init__(self, pretrained_net=None, **config):
278271
3: Solver3D(),
279272
}
280273

274+
self._model = None
275+
276+
def _get_or_create_model(self, data_obj, dim, var_count):
277+
if self._model is None:
278+
layer_size = [dim] + self.net + [var_count]
279+
net = dde.nn.FNN(layer_size, self.activation, self.kernel_initializer)
280+
model = dde.Model(data_obj, net)
281+
model.compile(self.optimizer, lr=self.lr, verbose=self.verbose)
282+
self._model = model
283+
else:
284+
def reset_weights(m):
285+
if hasattr(m, 'reset_parameters'):
286+
m.reset_parameters()
287+
self._model.net.apply(reset_weights)
288+
self._model.data = data_obj
289+
return self._model
290+
281291
def _set_coordinate_info(self, coord_names):
282292
self.coord_names = coord_names
283293
if self.coordinate_mapping is not None:

epde/operators/common/fitness.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ def _apply_deepxde(self, objective, force_out_of_place):
340340
penalty_coeff=self.params.get('penalty_coeff', 0.2),
341341
for_rps=False)
342342
# Pack per-eq masked (solution, data) for DeepXDEError.
343-
masked_solutions = [solution_list[i][mask_flat] for i in range(len(eqs))] # был solution_list
343+
masked_solutions = [solution_list[i][mask_flat] for i in range(len(eqs))]
344344
masked_data = [data_list[i] for i in range(len(eqs))]
345345
sctx = SolverContext(solution=masked_solutions, loss_add=loss,
346346
g_fun_vals=masked_data,

epde/operators/utils/parameters/default_parameters_multi_objective.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@
3131
"num_domain": 1000,
3232
"num_boundary": 200,
3333
"num_initial": 200,
34-
"epochs": 1000
34+
"iterations": 1000,
35+
"epochs": 1000,
36+
"verbose": false
3537
}
3638
},
3739
"_comment_legacy_aliases": "Param-registry aliases kept ONLY so the functional test harness (tests/functional) can fetch params by the historical operator names; the production search builds the new SolverFreeFitness / SolverBasedFitness hosts.",

0 commit comments

Comments
 (0)