无法在python中加载HDF5

时间:2019-11-09 00:55:23

标签: nlp hdf5 h5py fast-ai

我正在关注本教程: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的最后一层以创建单词嵌入。

谢谢。

1 个答案:

答案 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])