앞으로 네트워크를 학습시키기 위해서 pre-trained 모델을 사용할 일이 자주 있을 것이다.
보통 pre-trained 모델에서 파라미터를 'h5' 혹은 'hdf5'로 저장하게 되는데,
이를 적절히 활용하고, 이해하는데 도움이 될 수 있는 예제를 준비해보았다.
[h5py 설치] pip install h5py
[업그레이드] pip install h5py --upgrade
=================================시작========================================
import h5py
import numpy as np
file = h5py.File('test_hdf5.hdf5','w') # 저장하고 싶은 파일명을 입력한다. 'w'는 파일을 쓸 때 사용하는 옵션이다 (기존에 존재한다면 덮어쓰게 된다).
#file.create_group("a") # 폴더를 생성하는 방법 중 하나이다. 하지만 아래의 방법과 중복하여 사용이 불가능하기에 좀 더 직관적이고 사용하기 편리한 아래 방법만을 사용한다. 이렇게도 사용할 수 있다는 것만 알고 넘어가자.
#file.create_group("b/c")
#file["a"].create_group("d")
#file["b"].create_group("f")
g = file.create_group("a") # create_group을 사용하여 파일에 'a'라는 폴더를 생성한다.
g2 = file.create_group("b")
g.create_group("d") # 'a' 폴더 안에 'd' 라는 폴더를 생성한다.
g.create_group("sub") # 'a' 폴더 안에 'sub' 라는 폴더를 생성한다.
g2.create_group("c")
g2.create_group("f")
print(file.keys()) # keys를 사용하여 'test_hdf5.hdf' 파일의 디렉토리를 확인한다.
print(g.keys())
print(g2.keys())
g2.attrs['message'] = "Hello Python!!" # attrs를 사용하여 속성을 추가할 수 있다. 속성의 자료형은 튜플(tuple)타입이다.
g2.attrs['dt'] = "2021.12.20"
print(g2.attrs['message'])
print(g2.attrs.keys())
print('속성의 키와 값을 출력해보기') # print를 통해 위의 속성이 잘 적용되었는지 확인할 수 있다.
for key in g2.attrs.keys():
print(f'{key}:{g2.attrs[key]}') # 변수를 출력할 때에는 따옴표 앞에 'f'를 잊지말자.
print('속성의 값만 출력해보기')
for value in g2.attrs.values():
print(f'{value}')
print('속성의 자료형 체크 출력해보기')
for value in g2.attrs.items():
print(f'자료형:{type(value)}, 출력:{value}')
for key, value in g2.attrs.items():
print(f'{key}:{value}')
dt = g.create_dataset("test", data=np.arange(30)) # 'a' 폴더 안에 test라는 새로운 폴더와 데이터 셋을 생성한다.
print(f'dt: {dt.name}')
print(f'dt: {dt.shape}')
print(f'dt: {dt.dtype}')
print(f'dt: {dt[1:10]}')
dt[1] = 100
dt[2:10] = -1.5
print(dt[:]) # 'test' 데이터셋이 잘 입력되었는지 확인해보자.
g['sub2'] = np.arange(15) # 'a' 폴더 안에 'sub2' 라는 새로운 폴더와 데이터 셋을 생성한다.
c=file['/a/sub2'] # 데이터셋에 접근할 수 있다.
print(c)
c=g2['/a/test']
print(c)
file.close()
==================================끝=========================================
단순한 코드로써 기초적인 'hdf5' 파일을 다루고 이해하기에는 충분할 것으로 예상한다.
혹시 나중에 추가로 필요한 내용이 있다면 새롭게 글을 작성해 보겠다.
아래에는 출처가 되는 사이트와 'hdf viewer' 다운로드 링크를 첨부하겠다.
Source: https://ddolcat.tistory.com/715
[Python] 파이썬 h5py 설치 및 사용방법 알아보기 : HDF5 예제
Hierarchical Data Format 는 매우 크고 복잡한 대용량 데이터를 저장하기 위한 파일 형식(HDF4, HDF5)입니다. 파일 확장자는 hdf5 또는 h5입니다. HDF5의 가장 큰 특징은 빅데이터 처리시 유용하며, 빠른 입출
ddolcat.tistory.com
HDF viewer: https://support.hdfgroup.org/ftp/HDF5/releases/HDF-JAVA/hdfview-3.1/bin/
Index of /ftp/HDF5/releases/HDF-JAVA/hdfview-3.1/bin
support.hdfgroup.org