将bert中的字向量提取出来 并保存成npy文件

因为我们是要使用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) #

 

你可能感兴趣的:(深度学习,自然语言处理)