biobert for keras 版本的 huggingface 变形金刚

biobert for keras version of huggingface transformers

(也发布在 https://github.com/dmis-lab/biobert/issues/98

嗨,有人知道如何使用 huggingface 转换器(版本 2.4.1)将 biobert 作为 keras 层加载吗?我尝试了几种可能性,但其中 none 行得通。我发现的只是如何使用 pytorch 版本,但我对 keras 层版本感兴趣。以下是我的两次尝试(我将 biobert 文件保存到文件夹 "biobert_v1.1_pubmed")。

尝试 1:

biobert_model = TFBertModel.from_pretrained('bert-base-uncased')
biobert_model.load_weights('biobert_v1.1_pubmed/model.ckpt-1000000')

错误信息:

AssertionError: Some objects had attributes which were not restored:
    : ['tf_bert_model_4/bert/embeddings/word_embeddings/weight']
    : ['tf_bert_model_4/bert/embeddings/position_embeddings/embeddings']
   (and many more lines like above...)

尝试 2:

biobert_model = TFBertModel.from_pretrained("biobert_v1.1_pubmed/model.ckpt-1000000", config='biobert_v1.1_pubmed/bert_config.json')

错误信息:

NotImplementedError: Weights may only be loaded based on topology into Models when loading TensorFlow-formatted weights (got by_name=True to load_weights).

感谢任何帮助!我对 huggingface 的变形金刚库的体验几乎为零。我也尝试加载以下两个模型,但似乎它们只支持pytorch版本。

可能有点晚了,但我找到了解决这个问题的不太优雅的方法。 transformers 库中的 tf bert 模型可以使用 PyTorch 保存文件加载。

第 1 步:使用以下命令将 tf 检查点转换为 Pytorch 保存文件(此处更多内容:https://github.com/huggingface/transformers/blob/master/docs/source/converting_tensorflow_models.rst

transformers-cli convert --model_type bert\
  --tf_checkpoint=./path/to/checkpoint_file \
  --config=./bert_config.json \
  --pytorch_dump_output=./pytorch_model.bin

步骤 2:确保将以下文件合并到一个目录中

  • config.json - bert 配置文件(必须从 bert_config.json 重命名!)
  • pytorch_model.bin - 我们刚刚转换的那个
  • vocab.txt - bert vocab 文件

步骤 3:从我们刚刚创建的目录加载模型

model = TFBertModel.from_pretrained('./pretrained_model_dir', from_pt=True)

实际上还有一个参数 "from_tf",根据文档,它应该与 tf 样式检查点一起使用,但我无法让它工作。参见:https://huggingface.co/transformers/main_classes/model.html#transformers.PreTrainedModel.from_pretrained