pytorch_pretrained_bert如何将tensorflow模型转化为pytorch模型

 更新时间:2021年06月07日 09:29:24   作者:乐清sss  
这篇文章主要介绍了pytorch_pretrained_bert将tensorflow模型转化为pytorch模型的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

pytorch_pretrained_bert将tensorflow模型转化为pytorch模型

BERT仓库里的模型是TensorFlow版本的,需要进行相应的转换才能在pytorch中使用

Google BERT仓库里下载需要的模型,这里使用的是中文预训练模型(chinese_L-12_H-768_A_12)

在这里插入图片描述

下载chinese_L-12_H-768_A-12.zip后解压,里面有5个文件

chinese_L-12_H-768_A-12.zip后解压,里面有5个文件

bert_config.json

bert_model.ckpt.data-00000-of-00001

bert_model.ckpt.index

bert_model.ckpt.meta

vocab.txt

使用bert仓库里的convert_bert_original_tf_checkpoint_to_pytorch.py将此模型转化为pytorch版本的,这里我的文件夹位置为:D:\Work\BISHE\BERT-Dureader\data\chinese_L-12_H-768_A-12,替换为自己的即可

python convert_tf_checkpoint_to_pytorch.py --tf_checkpoint_path D:\Work\BISHE\BERT-Dureader\data\chinese_L-12_H-768_A-12\bert_model.ckpt --bert_config_file D:\Work\BISHE\BERT-Dureader\data\chinese_L-12_H-768_A-12\bert_config.json --pytorch_dump_path D:\Work\BISHE\BERT-Dureader\data\chinese_L-12_H-768_A-12\pytorch_model.bin

注:这里让我疑惑的是模型有5个文件,为什么转化的时候使用的是bert_model.ckpt,而且这个文件也不存在呀,是我对TensorFlow的模型不太熟悉,查阅资料之后将5个文件的作用说明如下:

$ tree chinese_L-12_H-768_A-12/
chinese_L-12_H-768_A-12/
├── bert_config.json                     <- 模型配置文件
├── bert_model.ckpt.data-00000-of-00001  <- 保存断点文件列表,可以用来迅速查找最近一次的断点文件
├── bert_model.ckpt.index                <- 为数据文件提供索引,存储的核心内容是以tensor name为键以BundleEntry为值的表格entries,BundleEntry主要内容是权值的类型、形状、偏移、校验和等信息。
├── bert_model.ckpt.meta                 <- 是MetaGraphDef序列化的二进制文件,保存了网络结构相关的数据,包括graph_def和saver_def等
└── vocab.txt                            <- 模型词汇表文件

0 directories, 5 files

在调用模型时使用chinese_L-12_H-768_A-12\bert_model.ckpt即可。

TensorFlow 读取ckpt文件中的tensor,将ckpt模型转为pytorch模型

想用MobileNet V1训练自己的数据,发现pytorch没有MobileNet V1的预训练权重,只好先下载TensorFlow的预训练权重,再转成pytorch模型。

读取ckpt中的Tensor名称以及Tensor值

TensorFlow的MobileNet V1预训练权重文件如下:

解压完文件后,发现没有.ckpt文件,文件名只需'./my_model/mobilenet_v1_1.0_224/mobilenet_v1_1.0_224.ckpt'这样写就行。

写一半发现Tensor名称好难对应起来。希望能给大家一个参考,也希望大家多多支持脚本之家

相关文章

  • Python语言实现将图片转化为html页面

    Python语言实现将图片转化为html页面

    这篇文章主要介绍了Python实现将图片转化为html页面,具有一定参考价值,需要的朋友可以了解下。
    2017-12-12
  • 使用SimpleITK读取NII格式三维图像及注意事项说明

    使用SimpleITK读取NII格式三维图像及注意事项说明

    这篇文章主要介绍了使用SimpleITK读取NII格式三维图像及注意事项说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • python scatter散点图用循环分类法加图例

    python scatter散点图用循环分类法加图例

    这篇文章主要为大家详细介绍了python scatter散点图用循环分类法加图例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • 如何利用python发送邮件

    如何利用python发送邮件

    这篇文章主要介绍了如何利用python发送邮件,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-09-09
  • python绘制词云图最全教程(自定义png形状、指定字体、颜色)

    python绘制词云图最全教程(自定义png形状、指定字体、颜色)

    词云图是一种直观的方式来展示文本数据,它易于理解,能展示出词语的频率使用情况,对于文本分析非常有用,这篇文章主要给大家介绍了python绘制词云图(自定义png形状、指定字体、颜色)的相关资料,需要的朋友可以参考下
    2024-05-05
  • Python 正则模块详情

    Python 正则模块详情

    这篇文章主要介绍了Python 正则模块,在Python中提供了操作正则表达式的模块,即re模块,文章详细记录了正则表达式的装饰符的相关资料,需要的朋友可以参考一下
    2021-11-11
  • python怎么去除字符串最后的换行符‘\n’

    python怎么去除字符串最后的换行符‘\n’

    这篇文章主要介绍了python去除字符串最后的换行符'\n',本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • Python中用pyinstaller打包时的图标问题及解决方法

    Python中用pyinstaller打包时的图标问题及解决方法

    这篇文章主要介绍了python中用pyinstaller打包时的图标问题及解决方法,本文从两方面给大家分析原因所在,通过截图实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2020-02-02
  • Qt5.14 与 OpenCV4.5 教程之图片增强效果

    Qt5.14 与 OpenCV4.5 教程之图片增强效果

    这篇文章主要介绍了Qt5.14 与 OpenCV4.5 教程之图片增强效果的实现,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-11-11
  • python 多线程中子线程和主线程相互通信方法

    python 多线程中子线程和主线程相互通信方法

    今天小编就为大家分享一篇python 多线程中子线程和主线程相互通信方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11

最新评论