如何导出查看TFBertModel生成的768维完整张量并保存为CSV或数组格式
解决方案
你看到的模型初始化警告属于预期现象:你加载的是基础TFBertModel,没有用到预训练阶段的MLM掩码语言模型头和NSP下一句预测头,不影响嵌入张量的输出结果。
以下是两种满足需求的实现方式:
方案1:优先导出为CSV格式
需要先安装pandas依赖(已安装可跳过):pip install pandas
import pandas as pd # 将TensorFlow张量转为numpy数组 embedding_np = cls_token.numpy() # 转换为DataFrame格式导出 df = pd.DataFrame(embedding_np) # 导出到本地CSV文件,可自行修改保存路径,float_format控制小数保留位数 df.to_csv("bert_embedding_output.csv", index=False, float_format="%.8f")
导出的CSV共21行(对应输入序列的21个token)、768列(对应bert-base-uncased的隐层维度)。
注:你当前代码中命名为cls_token的变量实际是全序列所有token的隐层张量,若仅需要<[BOS_never_used_51bce0c785ca2f68081bfa7d91973934]>标记对应的单个嵌入,可修改返回值为last_hidden_states[0][0]。
方案2:直接查看完整数组内容
numpy默认会自动截断长数组的打印输出,修改打印参数即可输出全部数值:
import numpy as np # 关闭numpy数组截断规则 np.set_printoptions(threshold=np.inf) # 打印完整张量数值 print(cls_token.numpy())
如果需要恢复默认的截断打印规则,执行np.set_printoptions(threshold=1000)即可。
内容的提问来源于stack exchange,提问作者Radhika Singh
相关产品推荐
相关产品推荐

