|
9 | 9 | import gc |
10 | 10 | from ..regularization import BaseComboRegularization, Sparse |
11 | 11 | from ..data_misfit import BaseDataMisfit |
12 | | -from ..objective_function import BaseObjectiveFunction |
| 12 | +from ..objective_function import BaseObjectiveFunction, ComboObjectiveFunction |
13 | 13 |
|
14 | 14 |
|
15 | 15 | def dask_getFields(self, m, store=False, deleteWarmstart=True): |
@@ -136,7 +136,7 @@ def get_dpred(self, m, f=None, compute_J=False): |
136 | 136 | vec, compute_J=compute_sensitivities |
137 | 137 | ))[0] |
138 | 138 |
|
139 | | - if compute_sensitivities and objfct.simulation.verbose: |
| 139 | + if compute_sensitivities: |
140 | 140 | runtime = time() - ct |
141 | 141 | total = len(self.dmisfit.objfcts) |
142 | 142 |
|
@@ -190,7 +190,19 @@ def dask_evalFunction(self, m, return_g=True, return_H=True): |
190 | 190 |
|
191 | 191 | phi_d = np.asarray(phi_d) |
192 | 192 | # print(self.dpred[0]) |
193 | | - self.reg2Deriv = [obj.deriv2(m) for obj in self.reg.objfcts] |
| 193 | + |
| 194 | + |
| 195 | + if isinstance(self.reg, ComboObjectiveFunction) and not isinstance( |
| 196 | + self.reg, BaseComboRegularization |
| 197 | + ): |
| 198 | + reg2Deriv = [] |
| 199 | + for fct in self.reg.objfcts: |
| 200 | + reg2Deriv += [multi * obj.deriv2(m) for multi, obj in fct] |
| 201 | + else: |
| 202 | + reg2Deriv = [multi * obj.deriv2(m) for multi, obj in self.reg] |
| 203 | + |
| 204 | + self.reg2Deriv = np.sum(reg2Deriv) |
| 205 | + |
194 | 206 | # reg = np.linalg.norm(self.reg2Deriv * self.reg._delta_m(m)) |
195 | 207 | phi_m = self.reg(m) |
196 | 208 |
|
@@ -244,7 +256,7 @@ def dask_evalFunction(self, m, return_g=True, return_H=True): |
244 | 256 |
|
245 | 257 | def H_fun(v): |
246 | 258 | phi_d2Deriv = self.dmisfit.deriv2(m, v) |
247 | | - phi_m2Deriv = np.sum([reg2Deriv * v for reg2Deriv in self.reg2Deriv], axis=0) |
| 259 | + phi_m2Deriv = self.reg2Deriv * v |
248 | 260 |
|
249 | 261 | H = phi_d2Deriv + self.beta * phi_m2Deriv |
250 | 262 |
|
|
0 commit comments