| 108 | |
| 109 | |
| 110 | def calculate_diversity(activation, diversity_times, emb_scale, norm_scale): |
| 111 | assert len(activation.shape) == 2 |
| 112 | assert activation.shape[0] > diversity_times |
| 113 | num_samples = activation.shape[0] |
| 114 | |
| 115 | activation = activation * emb_scale |
| 116 | first_indices = np.random.choice(num_samples, |
| 117 | diversity_times, |
| 118 | replace=False) |
| 119 | second_indices = np.random.choice(num_samples, |
| 120 | diversity_times, |
| 121 | replace=False) |
| 122 | delta = activation[first_indices] - activation[second_indices] |
| 123 | dist = linalg.norm(delta * norm_scale, axis=1) |
| 124 | return dist.mean() |
| 125 | |
| 126 | |
| 127 | def calculate_multimodality(activation, multimodality_times): |