본문 바로가기

프로그램 개발

파이썬 딥러닝 개발환경; 2. Keras 설치, MNIST 학습 테스트

파이썬 딥러닝 개발환경

1. PyTorch 설치

2. Keras 설치, 테스트

 

2. Keras 설치

파이썬은 Node.js와는 달리 프로젝트별로 패키지의 설치가 분리되지 않는다. 그래서, 개발하면서 설치하는 모든 패키지는 설치되어 있는 파이썬의 모든 프로젝트에 영향을 미치게 되고 이미 설치한 패키지의 버전을 바꾸면 다른 프로젝트에도 영향을 미치게 되기 때문에 프로젝트 별로 가상환경을 만드는 것이 좋다.

a. Keras 테스트를 위한 가상환경을 만들고 activate 한다.

python -m venv keras_test
cd keras_test
Scripts\activate.bat

b. 가상환경에 PyTorch, Keras 설치

새로 만든 가상환경에 1. 에서 설치했던 PyTorch를 다시 설치하고,

 

pip install torch==2.1.0 torchvision==0.16.0 torchaudio==2.1.0 --index-url https://download.pytorch.org/whl/cu118

 

앞에서 한 간단한 테스트를 통해 문제가 없는 것이 확인되면, 최신 버전의 Keras를 설치한다.

 

pip install --upgrade keras

 

Keras가 정상적으로 import 되는지 확인해 보면,

 

정상적으로 되지 않는다. Keras의 Compatibility를 공홈에서 확인했을 때 분명 Torch 버전이 2.1.0이라고 나와있는데 에러 메시지를 읽어보면 numpy버전이 너무 낮다고 나온다. Tensorflow버전이 거의 최신 버전이었을 때 최신 버전의 Keras와 호환된다고 한 것 봤는데, Torch버전이 2년 전 버전이어서 좀 이상하다고 생각은 되었었는데 역시 잘못되어 있는 것 같다.

 

그래서 이번에는 PyTorch 최신버전을 설치하고

 

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

 

Keras 최신버전을 설치해 봤다.

 

pip install --upgrade keras

 

정상적으로 import 되는지 확인해 보면,

 

문제가 없어 보인다. 그래서 간단하게 사용 가능한지 테스트해 보기로 했다. Keras가 PyTorch위에서 동작하기 때문에 Keras로 MNIST를 학습시켰을 때 문제가 없으면 Keras와 PyTorch 모두 문제가 없다고 봐도 될 것이다.

3. MNIST로 Keras 테스트

문제가 있으면 좀 더 쉽게 확인하고 수정하기 위해 jupyter notebook을 사용하기로 했다. jupyter notebook을 설정하는 방법은 아래 링크를 참고하면 된다.

 

윈도우에 만드는 파이썬 개발 환경; 3. 아나콘다 없이 무료로 Jupyter notebook 설치

윈도우에 만드는 파이썬 개발 환경1. pyenv로 여러 버전의 파이썬 설치2. venv로 파이썬 가상환경 만들기3. 아나콘다 없이 무료로 Jupyter notebook 설치4. VSCode에 Jupyter연결 0. 아나콘다 (Anaconda)아나콘다

front-it.tistory.com

jupyter notebook을 실행하면

 

jupyter notebook

 

브라우저가 자동으로 뜨고 notebook을 새로 작성하고 작업을 시작하면 된다. 테스트할 모델은 "Hands-On Machine Learning with Scikit-Learn, Keras & Tensorflow" 책에 있는 예제를 조금 변경해서 사용했다. 변경된 부분은

 

  1. Tensorflow기반 Keras가 이니여서 Tensorflow를 빼고,
  2. 패션 MNIST대신 더 간단한 MNIST로 데이터셋을 바꾸고,
  3. Flatten의 바뀐 문법에 따라 데이터셋의 차원을 Input에 정의했고,
  4. 검증데이터를 따로 분리하지 않고 데이터 크기의 0.15를 keras가 자동으로 잡도록 바꾸었다.

전체적인 내용은, 입력값과 출력값을 각각 train set, test set으로 나누어서 정리해 놓은 데이터셋을 가져와서, keras.Sequential로 정의해서 컴파일한 모델에 넣고 학습을 진행한 것으로, 아래와 같이 에러 없이 정상적으로 진행되는 것을 확인할 수 있다.

 

20 Epoch가 끝나면 최종 결과가 다음과 같이 잘 나오는 것을 확인할 수 있었다.

 

4. 최종 환경

Keras 공홈에 나와있는 Compatibility정보가 잘못되어 있어, PyTorch 버전을 추측해서 바꾸고 테스트해 본 결과 아래와 같이 PyTorch를 최신 버전으로 설치하면, 문제없이 정상 동작하는 것을 확인할 수 있었다.

 

Keras version PyTorch version CUDA version cuDNN version
3.0 2.4.1 11.8.0 9.4.0