无法在 python 中加载 HDF5

Can't load HDF5 in python

我正在学习本教程:https://github.com/fastai/fastai/tree/master/courses/dl2/imdb_scripts

我下载了第 3b 部分中的预训练模型。 我想打开 .h5 文件和 look/use 权重。我尝试使用 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'

我还使用了 The HDF Group HDF Viewer:https://support.hdfgroup.org/products/java/release/download.html

但这也没有用。它给出了一个错误,说“无法打开文件......不支持的格式”

有没有办法在Python中加载权重?我最终想访问堆叠 LSTMS 的最后一层来创建词嵌入。

提前致谢。

那是因为它是手电筒模型。您可以使用 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])