daguan_bert_ner
daguan_bert_ner copied to clipboard
看代码,wenyu332你使用Torch预训练bert,那有没有TensorFlow预训练bert的参考呢?或者有没有将模型bert_weight.bin转成bert_model.ckpt的方法呢?
在网上,搜到过将TensorFlow模型转成Torch的案例。反过来,将Torch模型转成TensorFlow模型的没有找到过。谢谢了! 我想试试TensorFlow预训练bert。谢谢了
这个你可以在google上面找找有没有大神有转换工具,我觉得应该有开源的,但我没有尝试过。。。
找到了 可以这样转换 import numpy as np import tensorflow as tf import torch v_list=[]
for k,v in torch.load('pytorch_model.bin',map_location='cpu').items(): v_list.append(np.array(v))
def change(ckpt_path, new_ckpt_path): index = 0 with tf.Session() as sess: for var_name, _ in tf.contrib.framework.list_variables(ckpt_path): print(var_name) var = tf.contrib.framework.load_variable(ckpt_path, var_name) var = tf.Variable(v_list[index]) index+=1
saver = tf.train.Saver()
sess.run(tf.global_variables_initializer())
saver.save(sess, new_ckpt_path)
ckpt_path = './chinese_L-12_H-768_A-12/bert_model.ckpt' new_ckpt_path = './bert_model.ckpt' change(ckpt_path, new_ckpt_path)
具体的方法来源是:https://github.com/thunlp/OpenCLaP/issues/3
找到了 可以这样转换 import numpy as np import tensorflow as tf import torch v_list=[]
for k,v in torch.load('pytorch_model.bin',map_location='cpu').items(): v_list.append(np.array(v))
def change(ckpt_path, new_ckpt_path): index = 0 with tf.Session() as sess: for var_name, _ in tf.contrib.framework.list_variables(ckpt_path): print(var_name) var = tf.contrib.framework.load_variable(ckpt_path, var_name) var = tf.Variable(v_list[index]) index+=1
saver = tf.train.Saver() sess.run(tf.global_variables_initializer()) saver.save(sess, new_ckpt_path)
ckpt_path = './chinese_L-12_H-768_A-12/bert_model.ckpt' new_ckpt_path = './bert_model.ckpt' change(ckpt_path, new_ckpt_path)
具体的方法来源是:thunlp/OpenCLaP#3
感谢wenyu