将Tensorflow BERT检查点转换为pytorch

时间:2019-08-19 02:56:24

标签: python tensorflow pytorch

我为特定领域的bert模型下载了tensorflow检查点,并将zip文件解压缩到pretrained_bert文件夹中,该文件夹包含以下三个文件

  

model.ckpt.data-00000-of-00001

     

model.ckpt.index

     

model.ckpt.meta

我使用以下代码将张量流检查点转换为pytorch

import torch

from pytorch_transformers.modeling_bert import BertConfig, BertForPreTraining, load_tf_weights_in_bert


tf_checkpoint_path="pretrained_bert/model.ckpt"
bert_config_file = "bert-base-cased-config.json"
pytorch_dump_path="pytorch_bert"

config = BertConfig.from_json_file(bert_config_file)
print("Building PyTorch model from configuration: {}".format(str(config)))
model = BertForPreTraining(config)

# Load weights from tf checkpoint
load_tf_weights_in_bert(model, config, tf_checkpoint_path)

# Save pytorch-model
print("Save PyTorch model to {}".format(pytorch_dump_path))
torch.save(model.state_dict(), pytorch_dump_path)

运行上面的代码时出现此错误

  

NotFoundError:不成功的TensorSliceReader构造函数:失败   找到pretrained_bert / model.ckpt

的所有匹配文件

我们非常感谢您的帮助.........

2 个答案:

答案 0 :(得分:0)

在代码中,必须为变量指定绝对路径

  • tf_checkpoint_path
  • bert_config_file
  • pytorch_dump_path

指定相对路径后,模型将找不到相应的文件。

答案 1 :(得分:0)

如错误所示,

  

未能找到pretrained_bert / model.ckpt的任何匹配文件

您的程序可能无法从名为pretrained_bert的文件夹或没有pretrained_bert/model.ckpt*文件的位置执行。

因此,首先,确保文件存在。此外,您可以按照以下步骤操作:

请提供绝对路径而不是相对路径。这将重新验证文件的存在。如果仍然要使用相对路径,请验证当前执行的路径,然后如果要导航到父目录,请使用../