| import matplotlib |
| import matplotlib.pyplot as plt |
| import numpy as np |
| import umap |
|
|
| matplotlib.use("Agg") |
|
|
|
|
| colormap = ( |
| np.array( |
| [ |
| [76, 255, 0], |
| [0, 127, 70], |
| [255, 0, 0], |
| [255, 217, 38], |
| [0, 135, 255], |
| [165, 0, 165], |
| [255, 167, 255], |
| [0, 255, 255], |
| [255, 96, 38], |
| [142, 76, 0], |
| [33, 0, 127], |
| [0, 0, 0], |
| [183, 183, 183], |
| ], |
| dtype=np.float, |
| ) |
| / 255 |
| ) |
|
|
|
|
| def plot_embeddings(embeddings, num_classes_in_batch): |
| num_utter_per_class = embeddings.shape[0] // num_classes_in_batch |
|
|
| |
| if num_classes_in_batch > 10: |
| num_classes_in_batch = 10 |
| embeddings = embeddings[: num_classes_in_batch * num_utter_per_class] |
|
|
| model = umap.UMAP() |
| projection = model.fit_transform(embeddings) |
| ground_truth = np.repeat(np.arange(num_classes_in_batch), num_utter_per_class) |
| colors = [colormap[i] for i in ground_truth] |
| fig, ax = plt.subplots(figsize=(16, 10)) |
| _ = ax.scatter(projection[:, 0], projection[:, 1], c=colors) |
| plt.gca().set_aspect("equal", "datalim") |
| plt.title("UMAP projection") |
| plt.tight_layout() |
| plt.savefig("umap") |
| return fig |
|
|