一种RuntimeError Key bert/embeddings/position_embeddings not found in checkpoint的解决思路

一种RuntimeError: Key bert/embeddings/position_embeddings not found in checkpoint的解决思路

注意:这个方法绝对有问题,但是能解决燃眉之急

P.S.建议不要死磕,直接使用pytorch版的该模型会快乐的多,地址贴这里了
https://github.com/JunnYu/RoFormer_pytorch

最近因为各种各样的原因,完全0基础的小白不得不跑一下苏老师的simBERTv2模型,下载下来,并且采用了bert4keras官网给的代码示例后,这就开跑,结果报了错误:

RuntimeError: Key bert/embeddings/position_embeddings not found in checkpoint

一种RuntimeError Key bert/embeddings/position_embeddings not found in checkpoint的解决思路_第1张图片
方法1:关于图的错误
没解决,另外图中的函数已经过时,现在要采用tf.compat.v1.reset_default_graph()

环境:python3.6+keras2.3.1+tensorflow2.2.0+bert4keras0.10.6(如果和你的电脑已安装的一些包有冲突,请安装miniconda,配置一个python36的环境)

经过了几天的研究,我发现了以下的解决思路,但我感觉肯定还有些问题:

  1. 检查checkpoint文件内的地址,因为我是在windows上跑的,而苏老师的文件中默认的地址为一个Linux下的地址,把它改成自己的地址
  2. 循着报错我们发现,原因是检查点内找不到一些权重,顺着以上的报错找到models.py的load_weight_from_checkpoint函数,这是错误源头

一种RuntimeError Key bert/embeddings/position_embeddings not found in checkpoint的解决思路_第2张图片

  1. 直接忽略“不存在权重的问题”,即修改ignore_invalid_weights(models.py)为True
  2. 使用的conda,一定要退出后再重进才能配置生效

在像上述那样做以后,总感觉怪怪的,以为忽略加载模型就不对了,以下给一个可以看检查点保存了什么内容的代码链接(位置2.1):

tensorflow中的检查点checkpoint详解(二)——以tensorflow1.x 的模型保存与恢复为主_LoveMIss-Y的博客-CSDN博客_checkpoint文件

采用以上代码查看了一下,这个检查点里确实没有position_embedding,而不是别的比如图加载的问题。

后续我还会研究一下这个position_embedding的问题,毕竟以上只是偷懒的方法,而且我没有基础瞎搞也不好

你可能感兴趣的:(nlp学习中,tensorflow,人工智能,python)