pytorch_pretrained_bert如何将tensorflow模型转化为pytorch模型
作者:乐清sss 发布时间:2022-04-18 18:07:58
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名称好难对应起来。希望能给大家一个参考,也希望大家多多支持脚本之家
来源:https://blog.csdn.net/sunyueqinghit/article/details/103458365
猜你喜欢
- 1969年8月8日,在北京协和医院降生了一个漂亮的小女孩。接生的阿姨说,她的声音这么大,好象想要全世界的人都听到。后来,她的父亲为她取了一个
- 获取指定日期月份的第一天,你可以使用DATEADD函数,减去指定日期的月份过去了的天数,即可。 代码如下:CREATE FUNC
- 本文详细介绍了asp中如何使用sql语句删除数据库中的记录,初学asp者来看看!1,首先要明确删除哪条记录无非还就是SQL语句了,比如对应到
- Dreamweaver从出道以来,其简便易用而又功能强大的“行为”(Behavior)一直是大家所关注的热点之一。在Dreamweaver
- 方法一://PHP stdClass Object转array function object_array($array) {&
- 概述:本控件使用 html+css+javascript模拟HTML内置的select元素,实现其部分方法与属性,也增加了一部分功能,并且从
- php多进程实现PHP有一组进程控制函数(编译时需要–enable-pcntl与posix扩展),使得php能在nginx系统中实现跟c一样
- php中可以使用 mb_detect_encoding() 函数来判断字符串是什么编码的。当在php中使用mb_detect_encodin
- 通过设置全局随机种子使得每次的训练结果相同可以复现def seed_torch(seed=2018): rando
- Numpy中的N维数组(ndarray)Numpy 中的数组是一个元素表(通常是数字),所有元素类型相同,由正整数元组索引。在 Numpy
- 前后端分离的开发模式,原本觉得没什么稀奇的玩艺,在最近参与的一个大型项目中,让我有了更深的理解。前后端分离的开发模式:系统分析阶段,系分和前
- 问题:如何用ASP实现点击数统计?比如我要实现某篇文章被浏览一次就增加一个点击数,该怎么做?回答:就是说,比如,你的页面是:shownews
- 我们前面介绍的Selenium的WebDriver测试方法是基于网页来进行的。之前的例子都是用简单的网页来操作,可能体会不到网页的加载过程,
- 注入漏洞代码和分析<?php function customError($errno, $errstr, $errfile, $err
- 当数据量猛增的时候,大家都会选择库表散列等等方式去优化数据读写速度。笔者做了一个简单的尝试,1亿条数据,分100张表。具体实现过程如下。首先
- Python自动化测试-使用Pandas来高效处理测试数据一、思考1.Pandas是什么?功能极其强大的数据分析库可以高效地操作各种数据集c
- 我们先看一下JavaScript中关系运算符的类型转换规则:关系运算符(<、>、<=、>=) 试图将 express
- 原理:建一个栈,每次碰到一个新标签,就与栈顶的标签配对,如果配对,栈顶的标签就出栈,如果不配对,这个新标签就进栈,最终,栈如果是空的,说明所
- 简述和GNU一样,YAML是一个递归着说“不”的名字。不同的是,GNU对UNIX说不,YAML说不的对象是XML。YAML不是XML。为什么
- 1 序言1.1 生存压力带来的哲思马尔萨斯最早发现,生物按照几何级数高度增殖的天赋能力,总是大于他们的实际生存能力或现实生存群量,依次推想,