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


  模型.ckpt.data-00000-of-00001
  
  model.ckpt.index
  
  模型.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的所有匹配文件


任何帮助都非常感激............

最佳答案

正如错误所言,


  找不到与pretrained_bert / model.ckpt匹配的文件


您的程序可能没有在名为pretrained_bert的文件夹中执行,或者没有pretrained_bert/model.ckpt*文件。

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

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

关于python - 将Tensorflow BERT检查点转换为pytorch时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57549972/

10-10 03:40