在pytorch中使用用npz文件保存的预训练模型

开始

最近在看transformer相关的文章,在AN IMAGE IS WORTH 16X16 WORDS:
TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE这篇文章中,作者给出了在超大数据集上训练的模型。但是采用的是npz文件保存。这里将介绍npz文件和如何将其应用到pytorch中进行加载参数和训练。

1、什么是npz文件?

npz文件是python中numpy的文件存储。
使用方法如下:

from numpy import load
data = load('D:/CsdnProject/TransUNet-main/ViT-B_16.npz')
lst = data.files
for item in lst:
    print(item)
    print(data[item])

采用load的方式进行加载。然后打印其内容(其中加载路径为这次的预训练模型的路径)

2、如何将预训练模型加载到pytorch中进行使用?

2.1预训练模型npz文件中的内容

首先,npz文件中存放的内容有两个内容,一个是模型中每个模块的名称,第二个是这个模块保存的参数。
如1所示代码

from numpy import load
from os.path import join as join
data = load('D:/CsdnProject/TransUNet-main/ViT-B_16.npz')
lst = data.files
for item in lst:
    print(item)
    print(data[item])

将其打印出来的结果是(未显示参数)

C:\Users\sg\Anaconda3\envs\pytorch\python.exe D:/CsdnProject/TransUNet-main/TestNpz.py
Transformer/encoder_norm/bias
Transformer/encoder_norm/scale
Transformer/encoderblock_0/LayerNorm_0/bias
Transformer/encoderblock_0/LayerNorm_0/scale
Transformer/encoderblock_0/LayerNorm_2/bias
Transformer/encoderblock_0/LayerNorm_2/scale
Transformer/encoderblock_0/MlpBlock_3/Dense_0/bias
Transformer/encoderblock_0/MlpBlock_3/Dense_0/kernel
Transformer/encoderblock_0/MlpBlock_3/Dense_1/bias
Transformer/encoderblock_0/MlpBlock_3/Dense_1/kernel
Transformer/encoderblock_0/MultiHeadDotProductAttention_1/key/bias
Transformer/encoderblock_0/MultiHeadDotProductAttention_1/key/kernel
Transformer/encoderblock_0/MultiHeadDotProductAttention_1/out/bias
Transformer/encoderblock_0/MultiHeadDotProductAttention_1/out/kernel
Transformer/encoderblock_0/MultiHeadDotProductAttention_1/query/bias
Transformer/encoderblock_0/MultiHeadDotProductAttention_1/query/kernel
Transformer/encoderblock_0/MultiHeadDotProductAttention_1/value/bias
Transformer/encoderblock_0/MultiHeadDotProductAttention_1/value/kernel
Transformer/encoderblock_1/LayerNorm_0/bias
Transformer/encoderblock_1/LayerNorm_0/scale
Transformer/encoderblock_1/LayerNorm_2/bias
Transformer/encoderblock_1/LayerNorm_2/scale
Transformer/encoderblock_1/MlpBlock_3/Dense_0/bias
Transformer/encoderblock_1/MlpBlock_3/Dense_0/kernel
Transformer/encoderblock_1/MlpBlock_3/Dense_1/bias
Transformer/encoderblock_1/MlpBlock_3/Dense_1/kernel
Transformer/encoderblock_1/MultiHeadDotProductAttention_1/key/bias
Transformer/encoderblock_1/MultiHeadDotProductAttention_1/key/kernel
Transformer/encoderblock_1/MultiHeadDotProductAttention_1/out/bias
Transformer/encoderblock_1/MultiHeadDotProductAttention_1/out/kernel
Transformer/encoderblock_1/MultiHeadDotProductAttention_1/query/bias
Transformer/encoderblock_1/MultiHeadDotProductAttention_1/query/kernel
Transformer/encoderblock_1/MultiHeadDotProductAttention_1/value/bias
Transformer/encoderblock_1/MultiHeadDotProductAttention_1/value/kernel
Transformer/encoderblock_10/LayerNorm_0/bias
Transformer/encoderblock_10/LayerNorm_0/scale
Transformer/encoderblock_10/LayerNorm_2/bias
Transformer/encoderblock_10/LayerNorm_2/scale
Transformer/encoderblock_10/MlpBlock_3/Dense_0/bias
Transformer/encoderblock_10/MlpBlock_3/Dense_0/kernel
Transformer/encoderblock_10/MlpBlock_3/Dense_1/bias
Transformer/encoderblock_10/MlpBlock_3/Dense_1/kernel
Transformer/encoderblock_10/MultiHeadDotProductAttention_1/key/bias
Transformer/encoderblock_10/MultiHeadDotProductAttention_1/key/kernel
Transformer/encoderblock_10/MultiHeadDotProductAttention_1/out/bias
Transformer/encoderblock_10/MultiHeadDotProductAttention_1/out/kernel
Transformer/encoderblock_10/MultiHeadDotProductAttention_1/query/bias
Transformer/encoderblock_10/MultiHeadDotProductAttention_1/query/kernel
Transformer/encoderblock_10/MultiHeadDotProductAttention_1/value/bias
Transformer/encoderblock_10/MultiHeadDotProductAttention_1/value/kernel
Transformer/encoderblock_11/LayerNorm_0/bias
Transformer/encoderblock_11/LayerNorm_0/scale
Transformer/encoderblock_11/LayerNorm_2/bias
Transformer/encoderblock_11/LayerNorm_2/scale
Transformer/encoderblock_11/MlpBlock_3/Dense_0/bias
Transformer/encoderblock_11/MlpBlock_3/Dense_0/kernel
Transformer/encoderblock_11/MlpBlock_3/Dense_1/bias
Transformer/encoderblock_11/MlpBlock_3/Dense_1/kernel
Transformer/encoderblock_11/MultiHeadDotProductAttention_1/key/bias
Transformer/encoderblock_11/MultiHeadDotProductAttention_1/key/kernel
Transformer/encoderblock_11/MultiHeadDotProductAttention_1/out/bias
Transformer/encoderblock_11/MultiHeadDotProductAttention_1/out/kernel
Transformer/encoderblock_11/MultiHeadDotProductAttention_1/query/bias
Transformer/encoderblock_11/MultiHeadDotProductAttention_1/que
评论 46
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值