앞으로 네트워크를 학습시키기 위해서 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

 

'개인공부 > Python' 카테고리의 다른 글

im2col 함수  (0) 2022.01.18
Pytorch - 텐서 조작하기  (0) 2022.01.18
RuntimeError (CUDA)  (0) 2022.01.13
Python, Pytorch, Torchvision 다운그레이드  (0) 2022.01.11
(1) 변수와 리스트  (0) 2021.12.14

+ Recent posts