因为我们是要使用bert的词向量,希望可以简单如word2vec 一般,拿来就用 ,所以将 bert_model.ckpt中的保存的word_embedding提取出来,并进行保存。
也是一个tensorflow 保存 提取 模型的方法
首先 下载 bert中文预训练模型 chinese_L-12_H-768_A-12 这是一个768维的中文词向量 预训练模型
在这个文件夹下 使用下列 代码
import tensorflow as tf
from tensorflow.python import pywrap_tensorflow
import numpy as np
ckpt_path = 'bert_model.ckpt'
reader = pywrap_tensorflow.NewCheckpointReader(ckpt_path)
param_dict = reader.get_variable_to_shape_map() # 读取 ckpt中的参数的维度的
#emd = param_dict['bert/embeddings/word_embeddings']
emd = reader.get_tensor('bert/embeddings/word_embeddings') # 得到ckpt中指定的tensor
print(len(emd))
print(emd[:5])
param=np.array(emd)
np.save('bert_embed.txt',param)
'''
from tensorflow.python.tools import inspect_checkpoint as chkp
chkp.print_tensors_in_checkpoint_file(file_name="./bert_model.ckpt",
tensor_name = 'bert/embeddings/word_embeddings',
all_tensors = True,
all_tensor_names=True) #