pytorch_pretrained_bert將tensorflow模型轉化為pytorch模型
BERT倉庫里的模型是TensorFlow版本的,需要進行相應的轉換才能在pytorch中使用
在Google BERT倉庫里下載需要的模型,這里使用的是中文預訓練模型(chinese_L-12_H-768_A_12)
![](/d/20211017/04fb8ad466b768c1d8a1a34523947bb2.gif)
下載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 - 為數(shù)據(jù)文件提供索引,存儲的核心內容是以tensor name為鍵以BundleEntry為值的表格entries,BundleEntry主要內容是權值的類型、形狀、偏移、校驗和等信息。
├── bert_model.ckpt.meta - 是MetaGraphDef序列化的二進制文件,保存了網(wǎng)絡結構相關的數(shù)據(jù),包括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訓練自己的數(shù)據(jù),發(fā)現(xiàn)pytorch沒有MobileNet V1的預訓練權重,只好先下載TensorFlow的預訓練權重,再轉成pytorch模型。
讀取ckpt中的Tensor名稱以及Tensor值
TensorFlow的MobileNet V1預訓練權重文件如下:
![](/d/20211017/1264de18eb2b261017754c95c5d2ff19.gif)
解壓完文件后,發(fā)現(xiàn)沒有.ckpt文件,文件名只需'./my_model/mobilenet_v1_1.0_224/mobilenet_v1_1.0_224.ckpt'這樣寫就行。
寫一半發(fā)現(xiàn)Tensor名稱好難對應起來。希望能給大家一個參考,也希望大家多多支持腳本之家
您可能感興趣的文章:- 教你使用TensorFlow2識別驗證碼
- TensorFlow中tf.batch_matmul()的用法
- Tensorflow與RNN、雙向LSTM等的踩坑記錄及解決
- tensorflow中的數(shù)據(jù)類型dtype用法說明
- tensorflow基本操作小白快速構建線性回歸和分類模型