| 125 | |
| 126 | |
| 127 | def calculate_multimodality(activation, multimodality_times): |
| 128 | assert len(activation.shape) == 3 |
| 129 | assert activation.shape[1] > multimodality_times |
| 130 | num_per_sent = activation.shape[1] |
| 131 | |
| 132 | first_dices = np.random.choice(num_per_sent, |
| 133 | multimodality_times, |
| 134 | replace=False) |
| 135 | second_dices = np.random.choice(num_per_sent, |
| 136 | multimodality_times, |
| 137 | replace=False) |
| 138 | delta = activation[:, first_dices] - activation[:, second_dices] |
| 139 | dist = linalg.norm(delta, axis=2) |
| 140 | return dist.mean() |