Set default divergence to histogram based
This commit is contained in:
@@ -53,14 +53,14 @@ def metrics(filestr: str, test_dataset, policy):
|
|||||||
visualize_distribution(true_actions[:,0], pred_actions[:,0], filestr+'_action_viz')
|
visualize_distribution(true_actions[:,0], pred_actions[:,0], filestr+'_action_viz')
|
||||||
|
|
||||||
# calculate divergence between acceleration distributions
|
# calculate divergence between acceleration distributions
|
||||||
acceleration_divergence = divergence(pred_actions, true_actions, type='js', n_components=-1)
|
acceleration_divergence = divergence(pred_actions, true_actions, type='js')
|
||||||
info['acceleration_divergence'] = acceleration_divergence
|
info['acceleration_divergence'] = acceleration_divergence
|
||||||
|
|
||||||
# calculate divergence between velocity distributions
|
# calculate divergence between velocity distributions
|
||||||
sim_velocities = states[:,:,2]
|
sim_velocities = states[:,:,2]
|
||||||
sim_velocities = sim_velocities[~torch.isnan(sim_velocities)].flatten()
|
sim_velocities = sim_velocities[~torch.isnan(sim_velocities)].flatten()
|
||||||
true_velocities = torch.cat(true_velocities, dim=0)
|
true_velocities = torch.cat(true_velocities, dim=0)
|
||||||
velocity_divergence = divergence(sim_velocities, true_velocities, type='js', n_components=-1)
|
velocity_divergence = divergence(sim_velocities, true_velocities, type='js')
|
||||||
info['velocity_divergence'] = velocity_divergence
|
info['velocity_divergence'] = velocity_divergence
|
||||||
|
|
||||||
return info
|
return info
|
||||||
@@ -96,7 +96,7 @@ def average_velocity(states):
|
|||||||
arg_v = nanmean(vehicle_avg_v)
|
arg_v = nanmean(vehicle_avg_v)
|
||||||
return arg_v
|
return arg_v
|
||||||
|
|
||||||
def divergence(p, q, type='js', n_components=0):
|
def divergence(p, q, type='js', n_components=-1):
|
||||||
"""
|
"""
|
||||||
Calculate a divergence between p and q
|
Calculate a divergence between p and q
|
||||||
Args:
|
Args:
|
||||||
@@ -122,7 +122,6 @@ def divergence(p, q, type='js', n_components=0):
|
|||||||
m_hist = np.histogram(m, bins=m_bins, density=True, weights=m_weights)
|
m_hist = np.histogram(m, bins=m_bins, density=True, weights=m_weights)
|
||||||
d = .5 * kl_histogram(p, p_hist, m_hist) + .5 * kl_histogram(q, q_hist, m_hist)
|
d = .5 * kl_histogram(p, p_hist, m_hist) + .5 * kl_histogram(q, q_hist, m_hist)
|
||||||
return d
|
return d
|
||||||
|
|
||||||
elif type == 'kl':
|
elif type == 'kl':
|
||||||
if n_components < 0:
|
if n_components < 0:
|
||||||
# Use histogram binning to discretize sampled distributions
|
# Use histogram binning to discretize sampled distributions
|
||||||
|
|||||||
Reference in New Issue
Block a user