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名称好难对应起来。希望能给大家一个参考,也希望大家多多支持我们

(0)

相关推荐

  • PyTorch预训练Bert模型的示例

    本文介绍以下内容: 1. 使用transformers框架做预训练的bert-base模型: 2. 开发平台使用Google的Colab平台,白嫖GPU加速: 3. 使用datasets模块下载IMDB影评数据作为训练数据. transformers模块简介 transformers框架为Huggingface开源的深度学习框架,支持几乎所有的Transformer架构的预训练模型.使用非常的方便,本文基于此框架,尝试一下预训练模型的使用,简单易用. 本来打算预训练bert-large模型,发现

  • PyTorch加载预训练模型实例(pretrained)

    使用预训练模型的代码如下: # 加载预训练模型 resNet50 = models.resnet50(pretrained=True) ResNet50 = ResNet(Bottleneck, [3, 4, 6, 3], num_classes=2) # 读取参数 pretrained_dict = resNet50.state_dict() model_dict = ResNet50.state_dict() # 将pretained_dict里不属于model_dict的键剔除掉 pret

  • Pytorch BertModel的使用说明

    基本介绍 环境: Python 3.5+, Pytorch 0.4.1/1.0.0 安装: pip install pytorch-pretrained-bert 必需参数: --data_dir: "str": 数据根目录.目录下放着,train.xxx/dev.xxx/test.xxx三个数据文件. --vocab_dir: "str": 词库文件地址. --bert_model: "str": 存放着bert预训练好的模型. 需要是一个gz

  • 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

  • 使用LibTorch进行C++调用pytorch模型方式

    目录 环境 具体过程 下载LibTorch 用pytorch生成模型文件 VS创建工程并进行环境配置 运行VS2017工程文件 总结 前天由于某些原因需要利用C++调用PyTorch,于是接触到了LibTorch,配了两天最终有了一定的效果,于是记录一下. 环境 PyTorch1.6.0 cuda10.2 opencv4.4.0 VS2017 具体过程 下载LibTorch 去PyTorch官网下载LibTorch包,选择对应的版本,这里我选择Stable(1.6.0),Windows,LibT

  • pytorch模型转onnx模型的方法详解

    目录 学习目标 学习大纲 学习内容 1 . pytorch 转 onnx 2 . 运行onnx模型 3.onnx模型输出与pytorch模型比对 总结 学习目标 1.掌握pytorch模型转换到onnx模型 2.顺利运行onnx模型 3.比对onnx模型和pytorch模型的输出结果 学习大纲 pytorch模型转换onnx模型 运行onnx模型 onnx模型输出与pytorch模型比对 学习内容 前提条件:需要安装onnx 和 onnxruntime,可以通过 pip install onnx

  • 如何计算 tensorflow 和 pytorch 模型的浮点运算数

    目录 1. 引言 2. 模型结构 3. 计算模型的 FLOPs 3.1. tensorflow 1.12.0 3.2. tensorflow 2.3.1 3.3. pytorch 1.10.1+cu102 3.4. 结果对比 4. 总结 本文主要讨论如何计算 tensorflow 和 pytorch 模型的 FLOPs.如有表述不当之处欢迎批评指正.欢迎任何形式的转载,但请务必注明出处. 1. 引言 FLOPs 是 floating point operations 的缩写,指浮点运算数,可以用

  • TensorFlow实现MLP多层感知机模型

    一.多层感知机简介 Softmax回归可以算是多分类问题logistic回归,它和神经网络的最大区别是没有隐含层.理论上只要隐含节点足够多,即时只有一个隐含层的神经网络也可以拟合任意函数,同时隐含层越多,越容易拟合复杂结构.为了拟合复杂函数需要的隐含节点的数目,基本上随着隐含层的数量增多呈指数下降的趋势,也就是说层数越多,神经网络所需要的隐含节点可以越少.层数越深,概念越抽象,需要背诵的知识点就越少.在实际应用中,深层神经网络会遇到许多困难,如过拟合.参数调试.梯度弥散等. 过拟合是机器学习中的

  • Pytorch模型转onnx模型实例

    如下所示: import io import torch import torch.onnx from models.C3AEModel import PlainC3AENetCBAM device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") def test(): model = PlainC3AENetCBAM() pthfile = r'/home/joy/Projects/

  • 解决pytorch 模型复制的一些问题

    直接使用 model2=model1 会出现当更新model2时,model1的权重也会更新,这和自己的初始目的不同. 经评论指出可以使用: model2=copy.deepcopy(model1) 来实现深拷贝,手上没有pytorch环境,具体还没测试过,谁测试过可以和我说下有没有用. 原方法: 所有要使用模型复制可以使用如下方法. torch.save(model, "net_params.pkl") model5=Cnn(3,10) model5=torch.load('net_

  • PyTorch 模型 onnx 文件导出及调用详情

    目录 前言 基本用法 高级 API 前言 Open Neural Network Exchange (ONNX,开放神经网络交换) 格式,是一个用于表示深度学习模型的标准,可使模型在不同框架之间进行转移 PyTorch 所定义的模型为动态图,其前向传播是由类方法定义和实现的 但是 Python 代码的效率是比较底下的,试想把动态图转化为静态图,模型的推理速度应当有所提升 PyTorch 框架中,torch.onnx.export 可以将父类为 nn.Module 的模型导出到 onnx 文件中,

  • Tensorflow 同时载入多个模型的实例讲解

    有时我们希望在一个python的文件空间同时载入多个模型,例如 我们建立了10个CNN模型,然后我们又写了一个预测类Predict,这个类会从已经保存好的模型restore恢复相应的图结构以及模型参数.然后我们会创建10个Predict的对象Instance,每个Instance负责一个模型的预测. Predict的核心为: class Predict: def __init__(self....): 创建sess 创建恢复器tf.train.Saver 从恢复点恢复参数:tf.train.Sa

  • pytorch 模型可视化的例子

    如下所示: 一. visualize.py from graphviz import Digraph import torch from torch.autograd import Variable def make_dot(var, params=None): """ Produces Graphviz representation of PyTorch autograd graph Blue nodes are the Variables that require gra

随机推荐