in train_helpers.py [0:0]
def accumulate_stats(stats, frequency):
z = {}
for k in stats[-1]:
if k in ['distortion_nans', 'rate_nans', 'skipped_updates', 'gcskip']:
z[k] = np.sum([a[k] for a in stats[-frequency:]])
elif k == 'grad_norm':
vals = [a[k] for a in stats[-frequency:]]
finites = np.array(vals)[np.isfinite(vals)]
if len(finites) == 0:
z[k] = 0.0
else:
z[k] = np.max(finites)
elif k == 'elbo':
vals = [a[k] for a in stats[-frequency:]]
finites = np.array(vals)[np.isfinite(vals)]
z['elbo'] = np.mean(vals)
z['elbo_filtered'] = np.mean(finites)
elif k == 'iter_time':
z[k] = stats[-1][k] if len(stats) < frequency else np.mean([a[k] for a in stats[-frequency:]])
else:
z[k] = np.mean([a[k] for a in stats[-frequency:]])
return z