Could not load dynamic library 'cudnn64_7.dll'; dlerror: cudnn64_7.dll not found 해결방법
·
프로그래밍/기타
Tensorflow gpu를 사용하기 위해 Cuda 10.2를 설치하고 cuDNN 8.x (최신버전)을 설치했는데, 아래와 같은 오류가 나왔다. 그래서 구글에서 찾아보니 Cuda 10.1를 설치해야 된다더라. 설치했던 10.2를 열심히 지우고 Cuda를 10.1로 다시 설치했더니!!! 알고보니 필요한 파일은 cuda64_7.dll... 텐서플로우는 cuDNN 8.x가 아니라 7.x가 필요했던 것이다. 알맞은 Cuda 버전의 cuDNN을 7.x을 다운받으면 (필자는 10.1) 아래와 같이 cuda64_7.dll파일이 있다. 적용한 후에 다시 실행해보니 gpu를 정상적으로 인식했다.
[정규화] Batch Normalization
·
프로그래밍/머신러닝
* 본 내용은 공부한 것을 정리한 글이므로, 오류가 있을 수 있습니다. Internal covariate shift Internal covariate shift는 번역하면 '내부 공변량 변화'으로, 데이터가 모델에 입력으로 들어갈때, 은닉층의 입력 분포가 다르다는 것이다.(입력은 정규화 할 수 있다.) 내부 레이어의 입력은 이전 레이어의 출력과 같으므로, 학습할 때마다 가중치 값이 변하고 분포는 또 바뀌게 된다. Batch Normalization을 하게 된 이유가 이러한 문제를 해결하기 위함이였다. Batch Normalization 논문에서는 입력 데이터의 정규화 처럼 은닉층의 입력도 정규화를 하면, 안정적으로 학습이 가능할 것 이라는 것으로 생각했다. (실제로도 그렇고) 그렇다면 어떻게 정규화를 할..
[컨볼루션] ShuffleNet
·
프로그래밍/머신러닝
*본 내용은 공부 정리용으로 작성되었으며, 내용에 오류가 있을 수도 있습니다. ShuffleNet ShuffleNet은 기존 MobileNet과 같은 이유로 만들어졌다. 주요 목적은 변수와 연산량을 줄이는 것으로, MobileNet에선 Depth-wise separable convolution을 썼지만 이번엔 Group convolution과 Channel Shuffle을 사용한다. MobileNet과 Depth-wise separable convolution, Group convolution에 대해선 이전에 포스팅 한 것이 있다. Group convolution Group Convolution은 전에 AlexNet에서 사용되었는데, 그 때에는 GPU의 성능 한계 때문에 병렬처리를 위해 channel을 ..
[컨볼루션] Group convolution
·
프로그래밍/머신러닝
Group convolution group convolution은 입력의 채널들을 여러개의 그룹으로 나누어 convolution을 수행하는 방식이다. 왜 이런 방식을 쓰는 것일까? 그룹이 독립적으로 나누어 계산되기 때문에, 병렬처리에 유리하고 변수가 적게 쓰인다. 변수개수는 다음과 같다(K = 필터크기, N = 출력채널크기, M = 입력채널크기, g = 그룹 개수) g개의 그룹이 입력채널M/g에서 출력채널N/g을 생성한다. $$g*K^2 \frac{N}{g} * \frac{M}{g} = \frac{K^2NM}{g}$$ AlexNet에서도 사용이 되었는데, 그땐 GPU의 성능이 부족해서 병렬처리 & 적은 변수를 위해 사용했었다.
[컨볼루션] Mobilenet
·
프로그래밍/머신러닝
* 다음은 공부용으로 기록된 것으로 내용에 오류가 있을 수 있습니다. 오늘은 무거운 CNN 모델을 임베디드나, 휴대폰 환경에서 극복하기 위해 개발된 2개의 모델을 살펴보겠다. Mobilenet Mobilenet은 2017년에 발표된 논문에서 처음 소개 되었으며, 저번에 설명했던 Depth-wise separable convolution를 사용해서 경량화한 모델이다. 기존 CNN 모델인 VGG-16과 비교해 보면, 먼저 3x3 -> 1x1 필터를 적용한 것을 보아 Mobilenet에서 depthwise separable convolution을 사용한 것을 알 수 있고, pooling을 stride 2로 대신했다. pooling과정도 줄어들고, depthwise separable convolution을 사용..
[컴퓨터 비전] SRCNN, Image Super-Resolution Using Deep Convolutional Networks
·
프로그래밍/머신러닝
* 공부용으로 정리한 것으로 내용에 오류가 있을 수 있습니다. SRCNN, Image Super-Resolution Using Deep Convolutional Networks 이 논문은 2015년에 발표되었으며 Super Resolution에 최초로 딥러닝을 적용한 논문이다. 꽤 간단한 구조를 가졌는데, 각 단계는 3단계로 이루어진다. L1. Patch extraction and representation 저해상도 이미지에서 Patch를 추출한다. Patch는 특징을 의미한다. (Y는 입력이미지, W는 가중치, B는 bais) $$F_{1}(Y) = max(0, W_1*Y+B_1)$$ L2. Non-linear mapping 다차원 저해상도 Patch 백터를 다른 다차원 고해상도 Patch 백터로 맵핑..
[컨볼루션] Depthwise separable convolution
·
프로그래밍/머신러닝
* 본 내용은 공부 정리용으로 작성된 것이며 오류가 있을 수 있습니다. Nomal Convolution 기존 convolution에서 연산량은 아래와 같다. (K = 필터크기, N = 출력채널크기, Iw, Ih = 입력크기, M = 입력채널크기) $$ K^{2}MNI_{w}I_{h} $$ 따라서 위의 예제의 연산량은 $ 3^2*N*3*8*8 = 1,728N $ (N=1)이다. 이렇게 출력 채널이 작아지는 경우도 있지만, 특성지도를 더 늘리기 위해 채널의 수를 늘리는 경우도 있다. (N>1인 경우) N을 다른 방식으로 처리해서 기존 방식보다 곱셈연산을 줄인 방식이 아래에 나와있다. Dept-wise convolution Depth-wise convolution은 채널을 분리해서 컨볼루션 연산을 적용한 뒤,..
왜 닌텐도의 저장은 그렇게 느려야만 했을까
·
프로그래밍/기타
요즘 나오는 게임들은 다 화려하다. 3D는 기본이고, 사운드도 풍부하며 스토리도 알차다! 가만히 않아서 생각해보면, "예전 게임은 노잼이였나?" 라는 생각이 들곤하지만, 별로 그렇지도 않았다. 역겨운 폴리곤 덩어리가 왕창 나오는 3D는 싫었지만, 목장이야기, 동물의 숲, 뉴 슈퍼마리오 브라더스 등등 재미있던게 많았다. 그래서 요즘은 비슷하게 쏟아지는 게임들을 뒤로 한 채, 고전 게임을 많이 해보려고 한다. (고전이라고 해봤자, 2000년도 후반에 나온 게임들이다.. 난,..... 어리다!) 나의 어릴적 즐겼던 게임들은 대부분 닌텐도 게임이였다. (닌텐도 ds) R4칩을 사서 불법으로 엄청 했었다. 어릴때 사용하던 닌텐도는 이미 내 손을 거쳐간 뒤, 고인이 되었고 desmume이라는 에뮬레이터로 간단하게 ..
2jun0
'프로그래밍' 카테고리의 글 목록 (13 Page)