生物伯特为克拉斯版的抱脸变形金刚。

问题描述 投票:2回答:1

(也张贴在 https:/github.comdmis-labbiobertissues98。)

嗨,有谁知道如何使用huggingface transformers(2.4.1版)加载生物伯特作为keras层?我尝试了几种可能性,但都不成功。我只知道如何使用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版本。

keras nlp keras-layer huggingface-transformers
1个回答
3
投票

可能有点晚了,但我已经找到了一个不那么优雅的解决这个问题的方法。变压器库中的tf bert模型可以用PyTorch保存文件加载。

第1步:将tf检查点转换为tf模型。 用以下命令将tf检查点转换为Pytorch保存文件(更多内容请点击这里。https:/github.comhuggingfacetransformersblobmasterdocssourceconverting_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词汇文件。

第3步,从刚才创建的目录中加载模型。 从我们刚刚创建的目录中加载模型

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

其实还有一个参数 "from_tf",根据文档,这个参数应该适用于tf风格的检查点,但我无法让它工作。请看。https:/huggingface.cotransformersmain_classesmodel.html#transformers.PreTrainedModel.from_pretrained。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.