daguan_bert_ner icon indicating copy to clipboard operation
daguan_bert_ner copied to clipboard

看代码,wenyu332你使用Torch预训练bert,那有没有TensorFlow预训练bert的参考呢?或者有没有将模型bert_weight.bin转成bert_model.ckpt的方法呢?

Open lizhzh8 opened this issue 5 years ago • 3 comments

在网上,搜到过将TensorFlow模型转成Torch的案例。反过来,将Torch模型转成TensorFlow模型的没有找到过。谢谢了! 我想试试TensorFlow预训练bert。谢谢了

lizhzh8 avatar Aug 16 '19 02:08 lizhzh8

这个你可以在google上面找找有没有大神有转换工具,我觉得应该有开源的,但我没有尝试过。。。

wenyu332 avatar Aug 18 '19 09:08 wenyu332

找到了 可以这样转换 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

wenyu332 avatar Aug 26 '19 10:08 wenyu332

找到了 可以这样转换 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

lizhzh8 avatar Sep 09 '19 06:09 lizhzh8