요즘 Tensorflow 로 강화학습(Reinforcement Learning) 관련해서 공부를 하고 있습니다.

 

여기서 대부분의 자료가 Tensorflow 1.x 버전을 기반으로 소스코드가 만들어져있어 이를 위해 2.x 버전을 사용중인 저는 다운그레이드를 해야한다는 생각이 들어 자료를 찾다가 나름의 솔루션을 찾아서 공유드리고자 글을 간단히 작성해봅니다.

 

먼저, Tensorflow 2.x 환경에서 1.x 코드를 돌려볼 수 있는 간단한 솔루션이 있긴 합니다.

 

이를 위한 코드는 아래와 같습니다. 

 

해당코드는 강제로 Tensorflow 환경을 1.x로 import 시키고, 2.x 에서 기본설정된 즉시 실행을 비활성화 한다고 이해했습니다.

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

 

하지만, 확실히 완전한 호환은 되지 않는 점을 확인해서 완전한 Tensorflow 1.x 환경을 만들자는 생각이 들어 이를 위한 자료를 찾게 되었습니다.

 

 

 

<현재의 Tensorflow 버전 및 Python 버전 확인>

 

앞서 말씀드렸듯, 콘솔 커맨드 창에서 현재의 tensorflow 버전을 확인 해보신 후 현재버전이 2.x 버전이라면 1.x 소스코드 구동이 원활히 잘 되지 않으실껍니다.

 

현재의 Tensorflow 버전을 확인하는 코드는 아래와 같습니다.

import tensorflow as tf
print(tf.__version__)

 

 

또 다른 주의사항은 tensorflow 1.x (저는 1.15.5 버전 설치) 설치를 위해서는 Python 3.7 이하가 필요한것을 확인했습니다.

 

현재 Python 버전 확인은 아래와 같습니다.

python --version

 

 

<새로운 가상환경 세팅>

 

 Python 버전을 3.7 버전으로 (저는 3.7.16 버전으로 설치) 세팅된 가상환경을 세팅해야 Tensorflow 1.x 버전이 설치가 된다는 사실을 확인 후 새로운 가상환경을 꾸며보기로 했습니다.

 

먼저 새로운 가상환경을 만듭니다.

conda create -n (새로운 가상환경 이름) python 3.7

 

위와 같이 가상환경을 만들면 기본적으로 3.7 버전의 python 기반으로 코드가 돌아가기때문에 Tensorflow 1.x 구동을 위한 기본 환경은 완성됫습니다.

 

다음으로 Tensorflow 1.x 를 설치해줍니다. (저는 임시로 1.15.5 CPU 버전을 설치해줬습니다)

# cpu기반 개발환경일 때, 
pip install tensorflow==1.15.5

#gpu기반 개발환경일 때, 
pip install tensorflow-gpu==1.15.5

 

 

<강화학습을 위한 OpenAI 의 GYM 과 기타 파일 설치>

강화학습을 위해 OpenAI 에서 제공하는 간단한 게임들 기반으로 강화학습을 테스트 해볼 수 있는 Gym 이라는 환경을 설치 해줍니다.

 

그리고 키보드 입력값을 받기 위한 readchar도 설치 해줍니다.

 

마지막으로 이미지와 그래프등을 통해 결과를 확인하기 위한 matplotlib 를 설치 해줍니다.

 

pip install gym
pip install readchar
pip install matplotlib

 

 

이렇게 해서 Tensorflow 1.x 버전 기반으로 강화학습 공부를 해볼 수 있는 Python 3.7버전 기반의 환경이 완성되었습니다.

 

다양한 분들의 블로그에서 자료를 찾아서 저 나름대로 정리를 하여 공유드렸는데, 저처럼 완전 초보인분들께 혹시나 조금이라도 도움이 되셨으면 좋겠습니다.

 

참고했던 블로그는 아래와 같으며, 더 자세한 정보는 해당 사이트들을 통해 확인해보시기 바랍니다.

 

- [Tensorflow] 텐서플로우 버전 확인, 업그레이드, 다운그레이드 방법 (https://jimmy-ai.tistory.com/107)

 

- [Tensorflow]tf 2.x에서 tf1.x 코드 실행하기 (https://nsbg.tistory.com/entry/TensorFlow-tf-2x%EC%97%90%EC%84%9C-tf-1x-%EC%BD%94%EB%93%9C-%EC%8B%A4%ED%96%89%ED%95%98%EA%B8%B0)

 

- I cannot install Tensorflow Version 1.15 through pip (https://stackoverflow.com/questions/61491893/i-cannot-install-tensorflow-version-1-15-through-pip)

 

- ERROR: Could not find a version that satisfies the requirement... (https://lynnn.tistory.com/138)

 

 

 

 

 

Posted by Tommy™
,

요즘 deep learning 공부를 위해 Python과 Tensorflow 기반으로 공부를 하고 있습니다.

 

Deep learning 이해와 실습 및 neural net 구성에 필요한 기초 개념적인 컴퓨터 학습을 비롯 이론부터 소소한 테스트까지 함께 병행하고 있습니다.

 

그런데 제게 닥친 오류 한가지를 간단히 소개 및 해결방법에 대해 공유드리고자 합니다.

 

 

 

 

 

보통 deep learning 을 입문할때 제일 먼저 하는게 영상의 분류(classification) 입니다.

 

이는 훈련용 문제지와 정답 (training dataset) 을 동시에 인공신경망(ANN: Artificial neural network)에 집어넣고 일정 횟수(epoch)만큼 반복 학습하여 최적화된 학습 데이터를 만들고 난 후, 실제 문제지 (test dataset)을 넣어 결과를 확인합니다.

 

그리고 그 결과가 얼마만큼의 정확도를 가지는지를 확인하고 더 최적화된 인공신경망을 구성 및 테스트 해보는게 보통인데, 초반 입문자는 서두에 이미 언급했듯, 영상의 입력과 학습을 통해 영상의 종류에 따라 알아 맞춰보는 분류(classification)를 진행합니다.

 

기계학습 분야의 대표적인 트레이닝 및 테스트용 데이터셋인 MNIST dataset. 이는 손으로 쓴 숫자들로 이루어진 데이터셋이며, 이것의 학습을 통해 손으로 쓴 숫자를 스스로 인식하여 알려주는 훈련에 주로 활용됩니다. 이때 숫자를 인식하여 분류할때 확용되는 기법이 classification 입니다. (출처: 위키백과)

 

 

 

 

 

저 역시 이렇게 시작하고 있으며, 요즘은 CNN(Convolutional neural network) 기반으로 영상 내 사물 혹은 대상을 파트별로 쪼개는 기법(segmentation) 을 공부하고 있습니다.

 

여기서 한가지 문제점이 발생했는데, 연산된 결과 정보의 디버깅을 위해 정보 시각화에 특화된 Matplotlib 을 이용하여 정보를 확인해보고자 했지만, 아래와 같은 특정 에러코드가 뜨면서 오류가 발생하며 디버깅이 멈추는 상황이 발생했습니다.

 

qt.qpa.plugin: Could not load the Qt platform plugin "windows" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: direct2d, minimal, offscreen, webgl, windows.

 

 

 

해외 여러 블로그를 찾아보고 해결책을 모색해봤지만, 저에게는 효과가 없어 너무나도 답답한 상황에 마침 한줄기 빛과 같은 한 블로그의 게시글을 보게 되었습니다.

 

증상은 저와 거의 동일했으며, 해결하기 위해 시도한 2가지 방법을 공유해주셨습니다.

 

Could not load the Qt platform plugin 에러 해결 :: 내 삶 을 로 깅 하 기 (tistory.com)

 

Could not load the Qt platform plugin 에러 해결

에러 전문은 이런식으로 생겼다. qt.qpa.plugin: Could not load the Qt platform plugin "windows" in "" even though it was found. This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may

log-mylife.tistory.com

 

저 역시 기존에 있는 Numpy 와 Matplotlib, 그리고 pyqt5 을 지우고, 해당 글 게시자님과 같은 방법으로 재설치 해주었습니다. 

 

pip install pyqt5
pip install pyqt5-tools

 

 

 

이후, PC를 재부팅 후 프로그램을 컴파일 후 디버깅을 해보니.. 

 

문제가 발생했던 부분도 무사히 넘어가지고 오류코드도 사라졌습니다.

 

기존에 C 와 C++로 주로 연구개발을 진행했었고, Python 은 상대적으로 활용을 많이 못했었기에, 해당 오류를 잡는데 생각보다 많은 시간이 걸렸네요.

 

혹시나 해당 오류로 고생하고 계실 분들이 계실까봐 제가 참고했던 방법을 공유드리기 위해 글을 작성해보았습니다.

 

그럼 이제 또 다른 문제와 버그를 맞이하러 가보겠습니다.

 

 

 

 

 

Posted by Tommy™
,

홍콩 과기대의 김성훈 교수님의 강의 자료 중에서 CNN 기반 MNIST dataset을 학습시키는 강좌가 있다.

- URL: https://github.com/hunkim/DeepLearningZeroToAll/blob/master/tf2/tf2-11-1-mnist_cnn.py

 

현재 CUDA 와 Tensorflow 2.0 기반으로 환경이 세팅되어있는데, 해당 코드를 돌려보니 갑자기 오류가 발생하면서 디버깅이 되지 않았다.

 

에러코드와 내용은 다음과 같다.

- Loaded cuDNN version 8600 could not locate zlibwapi.dll. Please make sure it is in your library path!

 

이를 해결하기 위해 구글링을 하다보니, 해당 문제를 겪고 있는 사람이 의외로 많이 존재하며, 해결책에 대한 다양한 방법도 제시가 많이 되어있었다. 그중에서 가장 간단하며 눈에 띄는 한가지 솔루션을 발견했는데, 이를 간단히 요약하면, CUDA 가 설치된 폴더에서 zlib.dll 파일을 찾아서 복사 후 zlibwapi.dll 파일명으로 변경하고, 특정 폴더에 복사하라는 내용이었다.

- URL: https://stackoverflow.com/questions/72356588/could-not-locate-zlibwapi-dll-please-make-sure-it-is-in-your-library-path/74298473#74298473?newreg=d2b975f85b5c49e793202e372ccb7505 

 

Could not locate zlibwapi.dll. Please make sure it is in your library path

I am working on a object detection project and wanting to process the project with my GPU. I have completed the NVIDIA setup tutorial and everything works fine. My object detection code originally ...

stackoverflow.com

 

해당 댓글대로 나의 세팅 환경에 따라 적용 해보았더니 해당 오류코드가 사라지면서 문제없이 잘 컴파일 되고 디버깅이 되었다.

- Copy from : C:\Program Files\NVIDIA Corporation\Nsight Systems 2023.1.2\host-windows-x64\zlib.dll

- Renamed file : from "zlib.dll" to "zlibwapi.dll"

- Paste to : C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin

 

 

혹시나 동일한 문제를 겪으시는 분들이 계시다면 문제 해결을 위해 투자될 시간을 아끼시는데 조금이라도 도움이 되셨으면 좋겠다는 마음으로 솔루션에 대한 저의 해결책을 이 글을 통해 공유합니다.

 

 

 

 

 

Deep learning 공부 시작과 참고한 관련 자료 소개

 

Deep learning 공부 시작과 참고한 관련 자료 소개

2010 초중반부터 현재까지 매우 핫한, 하지만 관련 연구는 오랫동안 진행되어온 연구분야인 인공지능과 머신러닝, neural network, 그리고 deep learning 관련 공부를 뒤늦게나마 매우 열심히 하고 있다.

tommyhsm.tistory.com

 

Posted by Tommy™
,

2010 초중반부터 현재까지 매우 핫한, 하지만 관련 연구는 오랫동안 진행되어온 연구분야인 인공지능과 머신러닝, neural network, 그리고 deep learning 관련 공부를 뒤늦게나마 매우 열심히 하고 있다.

 

특히, deep learning 과 관련된 공부를 하다보니, 그 성능에 대한 놀라움과 환희를 넘어 걱정까지도 드는 상황이다.

 

스페인에서 박사과정을 진행하고 있었던 2016년 3월, 대한민국의 이세돌 9단과 영국의 AI 프로그램 개발 회사인 DeepMind 에서 만든 알파고(AlphaGo) 간의 바둑 대결이 펼쳐졌었다. 이는 당시 세계 최고의 바둑 인공지능 프로그램과 바둑의 최고 실력자로 손꼽히는 인간과의 대결로 주목을 받았었는데, 놀랍게도 1승 4패로 인공지능이 완승해버리는 어처구니 없는 상황이 발생했다. 

 

이때까지만 해도 인공지능과 deep learning 의 가능성을 느끼고 흥미와 관심은 두었었지만, 깊게 공부는 시도 할 엄두가 나지 않았었다. 아니, 용기가 없었다고나 할까..? 하지만 몇년이 지난 지금은 인공지능 프로그램에 번역을 의뢰하고, 시험 문제 정답을  물어보는 학생들로 인해 학교에서는 크나 큰 논란이 되고 있다. 또한, 사용자의 간단한 명령어 입력 만으로 그림도 알아서 그려주며, 심지어 인간의 영역으로만 손꼽혔던 작곡과 시를 짓는 상황까지 와버렸다. 강화학습을 통해 이제는 게임도 인간보다 잘하는 시대가 온 것이다. 가히 놀라움을 넘어 경외스러울 정도로 발전한 인공지능 기술을 확인 할 수 있는 요즘이다.

 

이러한 인공지능을 이제라도 맛을 보며 시작해보고 공부해보자는 생각이 강하게 들어 틈틈히 관련 공부를 시작하기로 했으며, 열심히 인터넷 교수님들의 도움을 받아 시간나는대로 수강을 시작했다.

 

현재 참고하고 있는 자료를 혹시나 필요하신 분이 계실 수도 있으니, 간단히 공유하고자 한다.

 

제일 먼저 참고했었던 곳은 "So Dabang" 님의 블로그인데, 해당 페이지에서 deep learning 공부를 위한 첫 시작에 필요한 자료를 참고 할 수 있었다. 해당 페이지에는 deep learning 관련 강좌에 대한 설명과 링크를 공유해주셔서 쉽게 접근할 수 있었다.

- URL: https://sodabang.wordpress.com/2016/06/26/deep-learning-%EC%9E%85%EB%AC%B8%EC%9E%90%EB%93%A4%EC%9D%84-%EC%9C%84%ED%95%9C-%ED%8A%9C%ED%86%A0%EB%A6%AC%EC%96%BC-%EB%AA%A8%EC%9D%8C/

 

Deep Learning 입문자들을 위한 튜토리얼 모음

그동안 외면해왔던 딥러닝의 열풍을 무시할 수 없음을 받아들이고 여름 방학 동안 드디어 딥러닝을 본격적으로 공부해보기로 했다. 학계야 계속 그때 그때 여러가지 토픽들이 새롭게 떠오르고

sodabang.wordpress.com

 

두번째는 HongLab 대표이신 홍정모 박사님 (자료 공유 당시였던 2016년 쯤에는 동국대 교수님 이셨던거 같다.)의 C++ 로 배우는 deep learning 강좌였다. 지금까지 C 와 C++ 을 주로 활용하여 연구개발 및 공부를 해왔던 한 사람으로써, 해당 강좌를 통해 기본 컨셉과 C++ 기반으로 deep learning 코드를 작성하는 방법, 심지어 코드까지 공유해주셔서 첫 프로그래밍을 시작하는데 크나 큰 도움을 받았던 홈페이지다. 2016년에 이런 훌륭한 강좌가 무료로 오픈되었었고 또 지금까지도 유익하게 잘 활용되고 있다는 점에서 정말 놀라우며, 너무나도 감사한 마음으로 deep learning 공부를 위한 첫 시작을 할 수 있었다.

- URL: https://blog.naver.com/honglabcokr/220697890605

 

C++로 배우는 딥러닝

  New in 2018 무엇이든 물어보세요! Gram Matrix 설명 (Style transfer) New in 2017 Sutton ...

blog.naver.com

 

세번째이자 deep learning을 이해하는데 가장 큰 도움을 받았던 홍콩 과기대의 김성훈 교수님의 deep learning 강좌였다. Deep learning에 대한 기초 개념부터 역사, 그리고 강좌를 오픈하셨던 2016년 당시까지의 연구근황 등을 천천히 차근차근 구체적으로 설명 해주셨으며, 매 실습강좌에 활용하셨던 Tensorflow 1.0 과 2.0 코드 전체를 Github을 통해 공유해주셨다. Tensorflow에 대해 생소했던 나는 해당 강좌를 통해 쉽게 접근 할 수 있었으며, 간결한 코드로 인해 이론과 실습을 동시에 잘 진행 할 수 있었다. 다회차 시청을 통해 이제는 코드를 원하는대로 시험 해볼 수 있는 단계까지 발전하는데 크나 큰 도움을 받았다. 

- URL: http://hunkim.github.io/ml/

 

모두를 위한 머신러닝/딥러닝 강의

 

hunkim.github.io

 

이제는 neural network와 deep learning 기반으로 간단한 프로젝트를 수행하고, 지금까지 해왔던 나의 연구분야와 잘 버무려서 시너지효과가 날 수 있도록 재밋는 연구를 하기 위한 준비를 하고 있는 상황이다. 앞으로 관련된 공부 혹은 문제 해결 등의 자료를 시간나는대로 틈틈히 공유할 계획이다. 

 

현실판 아이언맨이라고 불리우며, 테슬라와 스페이스X, 그리고 X(구 트위터) 최고 경영자인 일론 머스크가 했던 말을 마지막으로 인용하고자 한다. 일론 머스크는 미래에는 '20 대 80의 사회'가 될것이라고 예측했으며, 이는 오직 20% 사람들만 의미있는 직업을 갖게 될것이며, 80% 는 인공지능이 대체할 것이라고 했다. 또한, 인공지능 개발자가 인류 최후의 마지막 직업이 될 것이며, 이마저도 인공지능에 의해 사라질 것이다고 예견했다.

 

인공지능의 가능성과 잠재력을 확인한 지금의 나로써는 이에 정말 공감하며, 한편으로는 조금은 끔찍할 수도 있는 걱정스러운 말로 받아들여졌지만, 현 상황에서 아직까지는 조금 먼 이야기라 생각이 든다. 가장 중요한 핵심은 인공지능 관련 연구는 사람이 풀지 못하는 난제를 해결하는데 큰 도움을 주는 등 그 가능성을 여실히 잘 보여주고 있고, 많은 분야에 긍정적인 영향을 끼치고 있으며, 현 인류에게 있어 많은 도움을 줄 연구분야인건 틀림없는 사실이다.

 

이제 막 인공지능에 눈을 뜬 한명의 이름모를 듣보잡 연구자 이지만, 사회와 과학의 발전에 미약하나마 조금이라도 기여하기 위해 인공지능과 deep learning을 좀 더 깊이 파보고 또 이를 혹시나 다른분들께 도움이 되는 부분이 있다면 마땅히 공유하고자 한다. 화이팅!

 

 

'[ Topics ] > Deep learning' 카테고리의 다른 글

Tensorflow 2.x 에서 1.x 로 다운그레이드  (0) 2024.03.25
zlibwapi.dll error in Tensorflow 2.0  (0) 2023.09.01
Posted by Tommy™
,

깨진 글자 복구 사이트 찾다가 제일 괜찮고 성능도 좋은거 같아서 소개해드립니다.

 

Link: https://api.dcmys.kr/%EB%B7%81%EC%96%B4%EB%B2%88%EC%97%AD%EA%B8%B0/

 

뷁어번역기

뷁어번역기 "뷁어번역기"는 텍스트 인코딩 오류로 읽을 수 없게 된 문자열을 바로잡는 도구입니다.

api.dcmys.kr

 

PS. 해당 정보 및 관련 링크는 https://solbel.tistory.com/2296 를 통해서 알게되었습니다.

 

 

'[ Topics ] > ETC' 카테고리의 다른 글

영어로 표현하는 수학용어 및 표현방법  (0) 2015.07.31
Ogre 3D 프레임 체크 방법  (0) 2011.04.19
Posted by Tommy™
,