.h5文件的读取
**
關于hdf5文件
**
HDF(Hierarchical Data Format)指一種為存儲和處理大容量科學數據設計的文件格式及相應庫文件。詳見其官方介紹:https://support.hdfgroup.org/HDF5/ 。
Python 中有一系列的工具可以操作和使用 HDF5 數據,這里只介紹 h5py。
一個 HDF5 文件是存儲兩類對象的容器,這兩類對象分別為:
dataset:類似數組的數據集合;
gropp;類似目錄的容器,其中可以包含一個或多個 dataset 及其它的 group。
參考鏈接:https://www.jianshu.com/p/de9f33cdfba0
h5文件的讀取
這里以我要用的模型的h5文件為例,是AudioSet數據集的一部分,論文的作者是將tfrecord格式寫成了hdf5格式,因此想要讀取這樣格式的文件來看看里面的內容。
# python 2 #coding=utf-8 import datetime import os import h5py import numpy as np# f = h5py.File('path/filename.h5','r') #打開h5文件 f = h5py.File('E:/2018/AudioSet/bal_train.h5','r') f.keys() #可以查看所有的主鍵 print([key for key in f.keys()])運行程序后,結果有:
可以看到主鍵有3部分,分別為:
video_id_list, x, y
因此可以繼續查看主鍵里面的內容,這部分直接用print語句就能實現,接在主鍵程序之后,這里簡單舉例說明一下:
print('first, we get values of x:', f['x'][:]) print('then, we get values of y:', f['y'][:]) print(f['x'][:].shape) print(f['y'][:].shape)運行這一部分的代碼,結果有:
可以看到,通過print語句,得到了三個主鍵里面內容的大小,就我的h5文件,里面的video_id_list是一個存放了歌曲id的列表文件, x是輸入的歌曲的特征文件22160是樣本數目,(10,128)代表了樣本是一個10×128的矩陣, y是一個標簽文件,(22160,527)代表大小是22160×527,其中527是類別的數目。
可以利用io.save()函數來保存主鍵中的內容,。
from scipy import io io.savemat('x.mat', {'data': f['x'][:]}) io.savemat('y.mat', {'data': f['y'][:]}) io.savemat('video_id_list.mat', {'data': f['video_id_list'][:]})最后,給出完整的代碼:
# python 2 #coding=utf-8 from scipy import io import os import h5py import numpy as np#打開h5文件 f = h5py.File('path/filename.h5','r') #查看文件 f.keys() #可以查看所有的主鍵print([key for key in f.keys()]) print('first, we get values of x:', f['x'][:]) print('then, we get values of y:', f['y'][:]) print(f['x'][:].shape) print(f['y'][:].shape)#保存數據 io.savemat('x.mat', {'data': f['x'][:]}) io.savemat('y.mat', {'data': f['y'][:]}) io.savemat('video_id_list.mat', {'data': f['video_id_list'][:]})總結
- 上一篇: 词霸天下---140 词根 【-us-
- 下一篇: VTK笔记-图形相关-圆锥体-vtkCo