@@ -191,13 +191,12 @@ def sample_smc(
191
191
192
192
if parallel and cores > 1 :
193
193
pool = mp .Pool (processes = cores )
194
+ results = pool .starmap (likelihood_logp , [(sample ,) for sample in posterior ])
195
+ else :
196
+ results = [likelihood_logp (sample ) for sample in posterior ]
197
+ likelihoods = np .array (results ).squeeze ()
194
198
195
199
while beta < 1 :
196
- if parallel and cores > 1 :
197
- results = pool .starmap (likelihood_logp , [(sample ,) for sample in posterior ])
198
- else :
199
- results = [likelihood_logp (sample ) for sample in posterior ]
200
- likelihoods = np .array (results ).squeeze ()
201
200
beta , old_beta , weights , sj = calc_beta (beta , likelihoods , threshold )
202
201
203
202
model .marginal_likelihood *= sj
@@ -238,16 +237,20 @@ def sample_smc(
238
237
if parallel and cores > 1 :
239
238
results = pool .starmap (
240
239
metrop_kernel ,
241
- [(posterior [draw ], tempered_logp [draw ], * parameters ) for draw in range (draws )],
240
+ [
241
+ (posterior [draw ], tempered_logp [draw ], likelihoods [draw ], * parameters )
242
+ for draw in range (draws )
243
+ ],
242
244
)
243
245
else :
244
246
results = [
245
- metrop_kernel (posterior [draw ], tempered_logp [draw ], * parameters )
247
+ metrop_kernel (posterior [draw ], tempered_logp [draw ], likelihoods [ draw ], * parameters )
246
248
for draw in tqdm (range (draws ), disable = not progressbar )
247
249
]
248
250
249
- posterior , acc_list = zip (* results )
251
+ posterior , acc_list , likelihoods = zip (* results )
250
252
posterior = np .array (posterior )
253
+ likelihoods = np .array (likelihoods )
251
254
acc_rate = sum (acc_list ) / proposed
252
255
stage += 1
253
256
0 commit comments