在 W&B 中可视化嵌入
我们将数据上传到 Weights & Biases,并使用 Embedding Projector 来可视化嵌入,使用常见的降维算法,如 PCA、UMAP 和 t-SNE。数据集是在 Get_embeddings_from_dataset Notebook 中创建的。
什么是 Weights & Biases?
Weights & Biases 是一个机器学习平台,由 OpenAI 和其他机器学习团队使用,以更快地构建更好的模型。他们使用它来快速跟踪实验、评估模型性能、复现模型、可视化结果以及与同事分享发现。
1. 将数据记录到 W&B
我们创建一个 W&B Table,其中包含原始数据和嵌入。每个评论都是一个新行,1536 个嵌入浮点数都有自己的列,名为 emb_{i}
。
import pandas as pd
from sklearn.manifold import TSNE
import numpy as np
from ast import literal_eval
# 加载嵌入
datafile_path = "data/fine_food_reviews_with_embeddings_1k.csv"
df = pd.read_csv(datafile_path)
# 转换为列表的列表的浮点数
matrix = np.array(df.embedding.apply(literal_eval).to_list())
import wandb
original_cols = df.columns[1:-1].tolist()
embedding_cols = ['emb_'+str(idx) for idx in range(len(matrix[0]))]
table_cols = original_cols + embedding_cols
with wandb.init(project='openai_embeddings'):
table = wandb.Table(columns=table_cols)
for i, row in enumerate(df.to_dict(orient="records")):
original_data = [row[col_name] for col_name in original_cols]
embedding_data = matrix[i].tolist()
table.add_data(*(original_data + embedding_data))
wandb.log({'openai_embedding_table': table})
2. 渲染为 2D 投影
导航到 W&B 运行链接后,我们点击 Table 右上角的 ⚙️ 图标,并将“渲染方式:”更改为“组合 2D 投影”。
示例:http://wandb.me/openai_embeddings