PINN: risolve problemi minori — sigma in config, scale precompilate, closure fuori loop
- config.py: aggiunge GAUSS_SIGMA = 0.02 nella sezione parametri fisici - model.py: T_char, grad_char, pde_scale diventano costanti di modulo (_T_char, _grad_char, _pde_scale) calcolate una sola volta all'import - engine.py: closure L-BFGS definita una volta sola fuori dal loop Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -117,19 +117,19 @@ def train_model(data, epochs=None, patience=None):
|
||||
|
||||
_last = {}
|
||||
|
||||
for step in range(config.LBFGS_STEPS):
|
||||
def closure():
|
||||
lbfgs.zero_grad()
|
||||
loss, L_pde, L_ic, L_bc = heat_pinn_loss(
|
||||
model, data['x_f'], data['t_f'], data['x_ic'], data['t_bc']
|
||||
)
|
||||
loss.backward()
|
||||
_last['loss'] = loss.item()
|
||||
_last['pde'] = L_pde.item()
|
||||
_last['ic'] = L_ic.item()
|
||||
_last['bc'] = L_bc.item()
|
||||
return loss
|
||||
def closure():
|
||||
lbfgs.zero_grad()
|
||||
loss, L_pde, L_ic, L_bc = heat_pinn_loss(
|
||||
model, data['x_f'], data['t_f'], data['x_ic'], data['t_bc']
|
||||
)
|
||||
loss.backward()
|
||||
_last['loss'] = loss.item()
|
||||
_last['pde'] = L_pde.item()
|
||||
_last['ic'] = L_ic.item()
|
||||
_last['bc'] = L_bc.item()
|
||||
return loss
|
||||
|
||||
for step in range(config.LBFGS_STEPS):
|
||||
lbfgs.step(closure)
|
||||
if _last['loss'] < best_loss:
|
||||
best_loss = _last['loss']
|
||||
|
||||
Reference in New Issue
Block a user