我正在关注本教程:https://github.com/fastai/fastai/tree/master/courses/dl2/imdb_scripts
我在第3b部分中下载了预训练模型。 我想打开.h5文件并查看/使用权重。我试图使用python来做到这一点,但是它没有打开。
这是我使用的代码:
import tables
import pandas as pd
filename = “…bwd_wt103.h5”
file = tables.open_file(filename)
这是错误:
OSError: HDF5 error back trace
File “C:\ci\hdf5_1525883595717\work\src\H5F.c”, line 511, in H5Fopen
unable to open file
File “C:\ci\hdf5_1525883595717\work\src\H5Fint.c”, line 1604, in H5F_open
unable to read superblock
File “C:\ci\hdf5_1525883595717\work\src\H5Fsuper.c”, line 413, in H5F__super_read
file signature not found
End of HDF5 error back trace
Unable to open/create file 'C:/Users/Rishabh/Documents/School and Work/Classes/8
Fall2019/Senior Design/ULMFiT/Wiki Data/wt103/models/bwd_wt103.h5'
我还使用了HDF组HDF查看器:https://support.hdfgroup.org/products/java/release/download.html
但这也不起作用。出现错误消息“无法打开文件……格式不受支持”
有没有办法在Python中加载权重?我最终希望访问堆叠的LSTMS的最后一层以创建单词嵌入。
谢谢。
答案 0 :(得分:0)
那是因为它是火炬模型。您可以使用torch
将其加载到本地计算机上,如下所示:
>>> import torch
>>> filename = "bwd_wt103.h5"
>>> f = torch.load(filename, map_location=torch.device('cpu'))
现在,让我们对其进行探索:
>>> type(f)
OrderedDict
>>> len(f.keys())
15
>>> list(f.keys())
['0.encoder.weight',
'0.encoder_with_dropout.embed.weight',
'0.rnns.0.module.weight_ih_l0',
'0.rnns.0.module.bias_ih_l0',
'0.rnns.0.module.bias_hh_l0',
'0.rnns.0.module.weight_hh_l0_raw',
'0.rnns.1.module.weight_ih_l0',
'0.rnns.1.module.bias_ih_l0',
'0.rnns.1.module.bias_hh_l0',
'0.rnns.1.module.weight_hh_l0_raw',
'0.rnns.2.module.weight_ih_l0',
'0.rnns.2.module.bias_ih_l0',
'0.rnns.2.module.bias_hh_l0',
'0.rnns.2.module.weight_hh_l0_raw',
'1.decoder.weight']
您可以像这样访问0.rnns.2.module.weight_hh_l0_raw
的权重:
>>> wts = f['0.rnns.2.module.weight_hh_l0_raw']
>>> wts.shape
torch.Size([1600, 400])