완전히 동일한 에러는 아니지만, 아래와 같은 에러가 등장했다.

 

RuntimeError: Cannot initialize CUDA without ATen_cuda library. PyTorch splits its backend into two shared libraries: a CPU library and a CUDA library; this error has occurred because you are trying to use some CUDA functionality, but the CUDA library has not been loaded by the dynamic linker for some reason. The CUDA library MUST be loaded, EVEN IF you don't directly use any symbols from the CUDA library! One common culprit is a lack of -Wl,--no-as-needed in your link arguments; many dynamic linkers will delete dynamic library dependencies if you don't depend on any of their symbols. You can check if this has occurred by using ldd on your binary to see if there is a dependency on *_cuda.so library.

 

다행히도 Pytorch와 CUDA버전을 올려주니 에러없이 잘 동작하였다.

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

im2col 함수  (0) 2022.01.18
Pytorch - 텐서 조작하기  (0) 2022.01.18
Python, Pytorch, Torchvision 다운그레이드  (0) 2022.01.11
파라미터 저장을 위한 예제 (hdf5)  (0) 2021.12.20
(1) 변수와 리스트  (0) 2021.12.14

간혹 타인의 소스코드를 구현하면서 버전이 호환되지 않으면서 동작하지 않는 경우가 종종 발생한다.

 

되도록 구현한 사람과 동일한 환경을 먼저 설정한 뒤 소스코드를 분석하는 것이 시간낭비 하지않는 방법이라 생각한다.

 

한가지 주의할 점은 Python과 Pytorch 간 호환되는 버전인지도 확인한 뒤 설치하여야 한다.

 

Python 설치방법

conda install python="Python version"  → ex) conda install python=3.7

 

Pytorch 설치방법

<pip3>

pip3 install http://download.pytorch.org/whl

위의 링크를 먼저 적어준 뒤,

/cpu/torch-0.4.1-cp36-cp36m-win_amd64.whl

위의 예제처럼 원하는 링크를 추가해주며 된다.

ex) pip3 install http://download.pytorch.org/whl/cpu/torch-0.4.1-cp36-cp36m-win_amd64.whl

<Anaconda>

conda install pytorch='원하는버전' ex) conda install pytorch=0.4.1 -c pytorch

 

 

torchvision 설치방법

<Anaconda>

conda install torchvision -c pytorch

<pip>

pip install torchvision

 

 

Pytorch 버전별 설치방법 참고

https://pytorch.kr/get-started/previous-versions/

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

im2col 함수  (0) 2022.01.18
Pytorch - 텐서 조작하기  (0) 2022.01.18
RuntimeError (CUDA)  (0) 2022.01.13
파라미터 저장을 위한 예제 (hdf5)  (0) 2021.12.20
(1) 변수와 리스트  (0) 2021.12.14

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

변수

흥미롭게도 파이썬에서는 변수타입을 따로 지정해줄 필요가 없다.

 

변수에 값이 아닌 문자를 넣을 수도 있다.

문자열을 더하는 건 정말 쇼킹하다

리스트

배열과 동일한 의미이다. 하지만 리스트는 간편하게 배열을 다룰 수 있는 기능을 지원한다.

 

배열의 길이를 len() 함수로 다루게 되고, 배열 접근은 C++와 동일하다.

remove() 메소드를 통해서 배열에서 원하지 않는 값을 자유롭게 제거할 수 있다.

그럼 반대로 배열에 추가하는 메소드는 append()와 insert()이다.

append는 원소 마지막에 추가하게 된다.
insert는원하는 위치에 값을 추가할 수 있게 해준다. 리스트.insert(입력할 index, 값), 

리스트를 더하는 방법은 +기호 혹은 extend() 메소드를 사용할 수 있다.

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

im2col 함수  (0) 2022.01.18
Pytorch - 텐서 조작하기  (0) 2022.01.18
RuntimeError (CUDA)  (0) 2022.01.13
Python, Pytorch, Torchvision 다운그레이드  (0) 2022.01.11
파라미터 저장을 위한 예제 (hdf5)  (0) 2021.12.20

편미분은 간단하게 얘기해서 다변수 함수에서 x, y 변수중 하나만 미분을 하겠다는 의미이다. (부분미분처럼 직관적인 용어를 사용하지 왜 어렵게 편미분이라고 번역하여 사용하는지 모르겠다.)

 

우리가 고등학교에서 배웠던 Total derivatives는 하나의 독립변수만을 다루게 되는데, 두개 이상의 독립변수를 다루게 될 때에는 편미분을 사용하여야 한다.

 

우선 편미분을 계산하기 위해서는 x, y 중 하나만 변수로 취급하고, 다른 하나는 상수로 취급을 하여 결과적으로 편미분을 Total derivatives로 바꾸어서 계산을 하게 된다.

 

예제를 들어 설명해보겠다.

 

처음에 이 식을 보았을 때에는 이게 뭔가 싶었다.

 

위의 그림을 보았을 때, z=f(x,y)에서 (1,1)인 지점에서 편미분을 진행하겠다. (참고로 ∂는 라운드라고 읽는다.)

 

우선 x를 편미분하기 위해 y를 상수로 취급한다는 의미로 y0로써 표기하였다.

 

식을 최종적으로 정리하면, 편미분이 Total derivatives로 계산할 수 있게 되는데, x=1인 경우에 미분을 하므로 마지막에 2가 나오게 된다.

 

y 편미분도 이와 같은 방식으로 진행하면 되고, 결과적으로 x와 y의 편미분값이 나오게 되면서 평면 형태의 접선이 생기게 된다.

 

간단한 공식이므로 이만 줄이겠다.

+ Recent posts