반응형

안녕하세요

 

코딩연습생입니다~

 

정말 오랜만에 포스팅 하는거 같습니다..ㅠ

 

요즘 참 하는일 모두 하나하나 태글인거 같습니다..ㅎㅎ

 

정기적인 주식 관련 정보 포스팅을 하는 프로그램도 자주 뻑(?)이 나고.. 개선할려고 이것저것 수정 중인데..

 

쉽지가 않네요..

 

세금 관련 문제...하앜...ㅋㅋ

 

그래도 블로그 시작할때의 초기 마음가짐을 다시 바로 잡고...

 

포스팅을 올리도록 하겠습니다

 

이번 포스팅은 Tensorflow 1.x 버전의 소스코드를 사용하다가 GPU 카드를 변경하거나 또는 다른Tensorflow 2.x 버전의 

 

소스 코드와 같이 사용해야 하는 상황이 발생하였을때 문제가 생깁니다

 

여기 Tensorflow 2.0이 Release 되면서 기존 문제 되는 사항을 잘 정리한 블로그가 있어서 첨부 한다

 

http://solarisailab.com/archives/2640

 

33. TensorFlow 2.0 Release 및 변경사항 정리 – tf.Session & tf.placeholder 삭제, @tf.function, tf_upgrade_v2 | 솔라

2019-09-30에 TensorFlow 2.0이 정식 Release 되었다. 그동안의 많은 개발사항을 반영한 메이저 업데이트가 이루어진만큼 API 구조가 대대적으로 변경되었다. 자세한 변경사항은 TensorFlow GitHub 저장소의 릴

solarisailab.com

 

특히 Release가 변하면서 가장 문제가 되는 부분이 몇가지 있다 개인적인으로 사용시 문제가된 항목들을

해결한 방법을 예제를 들어 설명 하겠다

 

1. placeholder 사용 불가

   해결 방법

   (아래 예제 소스를 통해 같은 형태로 사용하면 된다)

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

#기존 코드
X = tf.placeholder(tf.float32, [None, seq_length, input_data_column_cnt])
#변경 코드
X = tf.compat.v1.placeholder(tf.float32, [None, seq_length, input_data_column_cnt])

 

2. rnn 사용 불가

  해결 방법

   (아래 예제 소스를 통해 같은 형태로 사용하면 된다)

import tensorflow.compat.v1 as tf <--- 2.x 버전 텐서(2.x을 1.x 버전처럼 사용)

tf.disable_v2_behavior()
tf.compat.v1.set_random_seed(777)

#기존 코드
cell = tf.contrib.rnn.BasicLSTMCell(num_units=rnn_cell_hidden_dim,
                                     forget_bias=forget_bias, state_is_tuple=True, activation=tf.nn.softsign)

#변경 코드
cell = tf.compat.v1.nn.rnn_cell.BasicLSTMCell(num_units=rnn_cell_hidden_dim,
                                                 forget_bias=forget_bias, state_is_tuple=True,
                                                 activation=tf.nn.softsign)

 

3. layerstf.contrib.layers.fully_connected 사용 불가

   해결 방법

  (아래 순서에 따라 설치하고 소스코드를 아래 형태로 변환해서 사용하면 된다)

   1) pip install tf-slim <-- 해당 명령올 패키지 설치

 

   2) 패키지 선언

from tf_slim.layers import layers as _layers

 

   3) 소스코드 변경

# 기존 코드
hypothesis = tf.contrib.layers.fully_connected(hypothesis[:, -1], output_data_column_cnt, activation_fn=tf.identity)

#변경 코드
hypothesis = _layers.fully_connected(hypothesis[:, -1], output_data_column_cnt, activation_fn=tf.identity)

 

이렇게 해당 부분들을 수정하고 나면

 

소스코드가 정상적으로 실행 되는 것을 확인 할 수가 있다

 

기존 Tensorflow 1.4 버전으로 구성된 코드를 Tensorflow 2.0 버전으로 변경 후 위에 관련된 부분을 수정한뒤에

 

실행하여 동작하는 모습이다

 

 

 

반응형
반응형

안녕하세요 코딩연습생입니다

 

앞전 포스팅에서 딥너링과 텐서플로우에 대한 좋을 글을 소개해 드렸습니다

 

이어서 텐서플로 설치와 주피터 노트북 사용 방법에 대한 포스팅을 다시 소개해 드리께요

 

[출처]

https://github.com/golbin/TensorFlow-Tutorials/tree/master/02%20-%20Preparation

 

golbin/TensorFlow-Tutorials

텐서플로우를 기초부터 응용까지 단계별로 연습할 수 있는 소스 코드를 제공합니다. Contribute to golbin/TensorFlow-Tutorials development by creating an account on GitHub.

github.com

2장 텐서플로 설치와 주피터 노트북

이 책은 파이썬 또는 기타 프로그래밍 언어를 어느 정도 아는 분을 대상으로 썼습니다. 따라서 설치 방법을 자세하게 설명하기보다는 어떠한 설치 방법들이 있는지, 그리고 이 책의 예제를 실행하는 데 필요한 라이브러리 설치를 중심으로 설명하겠습니다.

2.1 파이썬 및 필수 라이브러리 설치하기

이 책의 예제는 파이썬 3.6 버전과 텐서플로 1.2 버전을 기준으로 썼습니다. 따라서 파이썬 3.6을 설치해야 합니다(윈도우에서는 반드시 파이썬 3.5 이상, 64비트용을 사용해야 합니다).

맥, 리눅스, 윈도우 사용자 모두 다음 주소에서 파이썬을 내려받아 설치할 수 있습니다.

파이썬을 잘 설치했다면 텐서플로 설치는 매우 쉽습니다. 다음처럼 맥과 리눅스의 터미널 또는 윈도우의 명령 프롬프트에서 pip3 명령어를 사용하면 됩니다.

C:\> pip3 install --upgrade tensorflow

만약 엔비디아 GPU를 사용하고 있다면, 엔비디아 사이트에서 CUDA 툴킷을 설치한 뒤 다음의 명령어로 쉽게 GPU 가속을 지원하는 텐서플로를 설치할 수 있습니다(CUDA 툴킷 문서 http://docs.nvidia.com/cuda 참조).

C:\> pip3 install --upgrade tensorflow-gpu

그런 다음 이 책에서 사용하는 라이브러리들을 설치합니다.

C:\> pip3 install numpy matplotlib pillow

  • numpy - 수치 계산 라이브러리
  • matplotlib - 그래프 출력 라이브러리
  • pillow - 이미지 처리 라이브러리

이 외에 홈브루Homebrew, 아나콘다Anaconda 또는 소스를 직접 빌드해서 설치하는 다양한 방법이 있습니다. 설치가 잘 안 되거나 더 다양한 방법들을 알고 싶다면 다음의 텐서플로의 공식 홈페이지에서 확인하세요.

2.2 텐서플로 예제 내려받고 실행해보기

이 책의 모든 예제는 깃허브 저장소 https://github.com/golbin/TensorFlow-Tutorials 에 올려뒀습니다. 다음의 git 명령어로 소스코드 전체를 내려받거나, 압축 파일을 내려받아 적당한 위치에 풀어둡니다.

C:\> git clone https://github.com/golbin/TensorFlow-Tutorials.git

그림 2-1 깃허브에서 예제 소스 압축 파일 내려받기

그런 다음 터미널이나 명령 프롬프트에서 TensorFlow-Tutorials / 03 - TensorFlow Basic 위치로 이동한 뒤 다음 명령어를 실행해 파이썬과 텐서플로가 잘 설치되었는지 확인해봅니다.C:\TensorFlow-Tutorials\03 - TensorFlow Basic> python3 "01 - Basic.py" Tensor("Const:0", shape=(), dtype=string) Tensor("Add:0", shape=(), dtype=int32) b'Hello, TensorFlow!' [10, 32, 42]

윈도우에서는 탐색기를 이용해 원하는 폴더로 이동한 뒤 Shift + 마우스 오른쪽 버튼을 누르면, ‘여기서 PowerShell 창 열기’라는 메뉴를 통해 쉽게 해당 폴더를 명령 프롬프트로 열 수 있습니다(구버전 윈도우에서는 ‘여기서 명령 창 열기’). 또한, 터미널이나 명령 프롬프트에서 파일명의 일부를 입력한 뒤 TAB 키를 누르면 파일 이름이 자동완성되니 참고해주세요.

NOTE: 텐서플로 실행 시 다음과 같은 경고 메시지가 나올 수 있지만 텐서플로 실행에는 문제없으니 무시하셔도 됩니다.

2017-06-30 19:15:49.653301: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations. 2017-06-30 19:15:49.653322: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.

이 메시지가 보기 싫다면 터미널에서 다음 명령어를 실행해 경고 메시지를 없앨 수 있습니다.

export TF_CPP_MIN_LOG_LEVEL=2 // 리눅스, 맥 set TF_CPP_MIN_LOG_LEVEL=2 // 윈도우

2.3 주피터 노트북

주피터 노트북Jupyter Notebook은 웹브라우저상에서 파이썬 코드를 단계적으로 쉽게 실행하고, 시각적으로 빠르게 확인해볼 수 있도록 해주는 프로그램입니다(다른 프로그래밍 언어도 지원합니다).

주피터 노트북의 설치와 사용법은 매우 간단합니다. 먼저 설치는 일반적인 파이썬 패키지와 같이 pip3를 이용하면 됩니다.

C:\> pip3 install jupyter

그런 다음 프로젝트를 진행할 폴더의 터미널 또는 명령 프롬프트에서 다음 명령을 실행합니다.

C:\> jupyter notebook

그러면 웹브라우저가 열리면서 주피터 노트북이 실행될 것입니다.

그림 2-2 주피터 노트북을 TensorFlow-Tutorials 저장소의 폴더에서 실행한 모습

주피터 노트북을 실행한 다음 오른쪽의 [New] -> [Python 3] 메뉴를 눌러 새 프로젝트를 만들 수 있습니다.

새 프로젝트가 생성된 뒤, 파이썬 코드들을 넣고 Shift + Enter를 치면 다음처럼 코드 조각들의 실행 결과를 쉽게 확인할 수 있습니다.

그림 2-3 주피터 노트북 사용 예

이처럼 주피터 노트북은 파이썬 코드를 반복해서 실행하고 중간중간 결과를 확인하기에 매우 좋은 프로그램입니다. 하지만 이 책은 기본적으로 명령 프롬프트에서 실행하는 것을 가정하므로 주피터 노트북에서는 실행되지 않는 경우도 있을 것입니다(그래프를 그리거나 실행이 오래 걸리는 경우 등). 이런 경우가 생기면 당황하지 말고 구글링을 하시면 쉽게 해결책을 찾을 수 있을 것입니다. 구글은 모든 엔지니어의 친구니까요.

반응형
반응형

안녕하세요

 

코딩연습생입니다

 

요즘 딥러닝에 대한 공부를 하게 되면서 Opencv에 이어 TensorFlow에 대해 공부 중인데

 

자료 수집을 위해 많이 찾아보고 구현해 보고 있습니다

 

그러던 중에 정말 잘 정리된 좋은 글을 찾게되어 공유하고자 포스팅 합니다

 

혹시 문제가 될 경우 뎃글로 알려주시면 바로 삭제 조치 하도록 하겠습니다

 

[출처]

https://github.com/golbin/TensorFlow-Tutorials/tree/master/01%20-%20Why%20TensorFlow

 

golbin/TensorFlow-Tutorials

텐서플로우를 기초부터 응용까지 단계별로 연습할 수 있는 소스 코드를 제공합니다. Contribute to golbin/TensorFlow-Tutorials development by creating an account on GitHub.

github.com

 

1장 딥러닝과 텐서플로의 만남

1.1 인공지능, 머신러닝 그리고 딥러닝

2016년 알파고의 등장 이후 갑자기 일반에 인공지능(artificial intelligence)이라는 단어가 급격히 회자되기 시작했습니다. 그리고 이 책의 주제인 딥러닝, 즉 인공신경망 역시 굉장한 기세로 인터넷을 뒤덮기 시작했습니다. 인공신경망이 바로 알파고의 핵심 기술이기 때문이죠. 그럼 인공지능과 인공신경망은 어떻게 다른 것일까요?

인공지능에 대한 명확한 정의는 아직 없지만, 저는 인공지능은 관념에 가까운 것으로, 컴퓨터가 인간의 사고를 모방하는 모든 것을 뜻한다고 보고 있습니다. 그리고 머신러닝(machine learning)은 개념으로써, 컴퓨터가 스스로 학습하는 것을 말합니다. 특히 주어진 데이터를 이용해서 말이죠. 그리고 요즘 딥러닝(deep learning)으로 대표되는 인공신경망(artificial neural network)은 머신러닝을 구현하는 기술의 하나로, 인간 뇌의 동작 방식에서 착안하여 개발한 학습 방법입니다.

그림 1-1 인공지능 > 머신러닝 > 딥러닝

간단하게 예를 들어보겠습니다. [그림 1-2]의 위쪽처럼 기존의 인공지능인 규칙기반 인공지능(rule-based AI)이 바나나를 인식하도록 하려면 인간이 컴퓨터에 바나나를 식별하는 특징(feature)을 가르쳐줘야 했습니다. “길고, 노란색이고, 약간 휜 물체면 바나나야”라는 식이죠.

하지만 머신러닝의 학습 방식은 [그림 1-2]의 아래쪽과 같습니다. 바나나 사진을 주고 “이것이 바나나야”라고 하면 컴퓨터가 스스로 바나나의 특징을 학습합니다. “음. 바나나는 길고, 노란색이고, 휜 것이군”이라고 말이죠.

NOTE: 머신러닝에는 다양한 방법이 있지만, 간략히 설명하기 위해 약간 비약하였습니다. 참고로 이러한 방법을 end-to-end 학습이라고 하며, 딥러닝이 바로 이러한 방식으로 학습합니다.

그림 1-2 규칙기반 인공지능과 머신러닝의 바나나 인식

 

그러면 인공지능에 썰어놓은 바나나를 추가로 인식시키려면 어떻게 해야 할까요? 규칙기반 인공지능은 앞의 규칙에 “하얀색이고, 납작하고, 둥글다”라는 특징을 수작업으로 추가해줘야 합니다. 하지만 머신러닝은 썰어놓은 바나나 사진만 입력해주면 알아서 새로운 특징을 학습하고 인식할 수 있습니다.

그림 1-3 썰어놓은 바나나를 인식하는 방법

즉, 풀고자 하는 문제가 복잡할수록 규칙기반 인공지능보다는 머신러닝을 이용한 인공지능이 문제를 훨씬 더 효율적으로 해결할 수 있으리라 예상할 수 있습니다. 인간이 모든 특징을 분석하고 알고리즘을 만들어서 입력하는 것보다, 컴퓨터가 직접 특징을 추출하는 쪽이 더 빠르고 정확하다면 말이죠.

그러나 머신러닝 역시 한계가 있었습니다. 인간도 파악하기 어려울 정도로 복잡한 문제는 머신러닝으로도 풀기가 어려웠습니다. 하지만 2012년의 ILSVRC라는 이미지 인식 대회에서 큰 사건이 일어나면서 판세가 급격히 바뀌기 시작했습니다.

ILSVRC는 이미지넷(ImageNet)이 제공하는 1,000여 카테고리로 분류된 100만 개의 이미지를 인식하여 그 정확도를 겨루는 대회입니다. 이 대회에서 2011년까지는 이미지 인식률이 75%를 넘지 못하였는데, 2012년 대회에서 인공신경망을 이용한 알렉스넷(AlexNet)이 무려 84.7%라는 놀라운 인식률을 달성합니다. 그 이후부터는 딥러닝을 이용한 인공지능이 상위 랭크를 모두 휩쓸었고, 매년 인식률이 높아져, 현재는 상당수의 도전자가 97%에 육박하는 인식률을 기록하고 있습니다. 이는 인간의 인식률인 95%를 훨씬 웃도는 수준입니다.

그림 1-4 ILSVRC 인식 오류율(100% - 인식률)

여기서 잠시, 사실 인공신경망은 이미 1940년대부터 연구되던 기술입니다. 그런데 이렇게 좋은 기술이 왜 지금에서야 부상하게 된 것일까요? 그것은 바로 빅데이터와 GPU의 발전, 그리고 다양한 딥러닝 알고리즘의 발명 덕분입니다.

앞서 말씀드렸듯이 머신러닝은 기본적으로 데이터에서 컴퓨터가 직접 특징을 추출하는 방식이기 때문에 데이터가 많으면 많을수록 더 좋은 특징들을 많이 발견하여 정확도를 높일 수 있습니다. 인터넷이 생겨나기 전에는 데이터를 수급하기가 어려웠지만, 인터넷이 폭발적으로 성장하면서 어마어마한 양의 데이터를 쉽게 수급할 수 있게 되어 데이터 문제가 해결되기 시작했습니다.

그리고 인공신경망은 수백만에서 수조 개로 이뤄진 아주 간단한 수식 계산을 수천 번 이상 해야 합니다. 예전에는 불가능하다고 여길 정도의 계산량이었으나, GPU의 병렬처리 능력을 활용하고 역전파 등의 알고리즘을 통해 계산량을 많이 줄일 수 있게 되면서 이 문제 역시 해결되기 시작했습니다. 지금은 일반 데스크톱으로도 간단한 이미지를 인식시키는 신경망은 어렵지 않게 학습시킬 수 있을 정도니까요(4장에서 더 자세하게 설명하겠습니다).

더불어, 수많은 연구자와 회사들이 다양한 온라인 교육 프로그램과 오픈 소스들을 대중에 공개하였고, 이를 통해 많은 사람이 연구에 참여하게 된 것도 딥러닝이 급속도로 발전하게 된 계기가 되었습니다.

물론 인공신경망으로 모든 것을 해결할 수는 없습니다. 딥러닝에는 일반적으로 매우 많은 데이터가 필요하기 때문이죠. 따라서 데이터가 적다면 딥러닝이 아닌 다른 머신러닝 알고리즘을 사용하는 것이 좋을 수 있습니다.

어쨌든 딥러닝 덕분에 인공지능과 머신러닝의 시대가 다시 열렸다는 사실은 부인할 수 없을 것입니다.

1.2 왜 텐서플로인가?

텐서플로(TensorFlow)는 머신러닝 프로그램, 특히 딥러닝 프로그램을 쉽게 구현할 수 있도록 다양한 기능을 제공해주는 머신러닝 라이브러리로, 모두가 잘 아는 구글에서 만들었습니다.

텐서플로 자체는 기본적으로 C++로 작성했지만 파이썬, 자바, 고(Go) 등 다양한 언어를 지원합니다. 다만, 파이썬을 최우선으로 지원하여 대다수 편의 기능이 파이썬 라이브러리로만 구현되어 있으니 되도록이면 파이썬으로 개발하는 것이 가장 편리합니다.

또한 윈도우, 맥, 리눅스뿐만 아니라 안드로이드, iOS, 라즈베리 파이 등 다양한 시스템에서 쉽게 사용할 수 있도록 지원하여 매우 다양한 곳에 응용할 수 있습니다.

물론 머신러닝/딥러닝을 위한 라이브러리로 텐서플로가 유일한 것은 아닙니다. 토치(Torch), 카페(Caffe), MXNet, 체이너(Chainer), CNTK 등 많은 라이브러리가 있습니다. 그렇다면 왜 텐서플로를 사용하는 것일까요? 제가 생각하는 답은 커뮤니티입니다. 특히 저 같은 엔지니어에게 있어서 라이브러리를 선택할 때 가장 중요한 기준은 커뮤니티라고 생각합니다. 실무에 적용했을 때 생기는 문제점들을 해결하거나, 라이브러리 자체에 버그가 있을 때 얼마나 빠르게 수정되는가 하는 그런 것들. 바로 그런 요인들이 실무를 하는 엔지니어에게는 가장 중요한 부분이라고 할 수 있을 것입니다.

그런 점에 있어 현존하는 머신러닝 라이브러리 중 커뮤니티가 가장 북적이는 것이 바로 텐서플로입니다. 깃허브의 텐서플로 저장소나 각종 애플리케이션, 클라우드 서비스 등은 물론, 새로운 논문이 나올 때마다 텐서플로로 된 구현체가 가장 먼저 나올 정도로 텐서플로 커뮤니티는 놀라울 만큼 활발하게 움직이고 있습니다.

그림 1-5 TensorFlow KR 페이스북 (2017년 8월 24일 현재 가입자 21,975명)

당연하게도 구글 역시 텐서플로 커뮤니티를 상당히 적극적으로 지원하며, 한국에서는 페이스북의 TensorFlow KR 커뮤니티가 매우 활발하게 활동하고 있습니다. 그러므로 한국에 계신 연구자분들, 특히 머신러닝과 딥러닝을 처음 접하는 엔지니어라면 텐서플로로 시작하는 것이 딥러닝을 더 수월하게 익히는 길이라고 생각합니다.

 

반응형
반응형

안녕하세요

 

이번 포스팅은 현재 연습중인 Tensorflow를 통해 pb 파일 생성하기 위한 과정으로

 

이미지셋을 통한 라이브러리 설치 및 학습 그리고 학습된 라이브러리에 대한 평가 방법에 대한 포스팅을

 

해볼께요

 

첫번째로 Anaconda와 텐서플로우 설치를 먼저해야 합니다

 

설치 방법에 대해서는 아래 링크를 통해 확인하시기 바랍니다

 

https://codingman.tistory.com/77 

 

[Deep Learning] Anaconda3 + Tensorflow 사용하기

안녕하세요 코딩연습생 입니다ㅠ 개발 블로그를 운영하면서 이것저것 많이 정보를 올리고 있는데 해보고자 하는 연습물이 잘 안풀려서 요즘 1일 1포스팅이 잘 안 이루어지고 있습니다ㅠ 대충 포스팅 글 올리기에..

codingman.tistory.com

참고로 이번 포스팅에 사용된 버전 정보는 다음과 같습니다

 

=============================================================

1) Anaconda3

2) Python 3.7

3) Tensorflow 1.14

4) CUDA 8.0

==============================================================

 

위의 리스트 순서로 설치를 진행하시면 됩니다

 

CUDA 설치 방법은 아래 링크 포스팅을 참조해주세요

https://codingman.tistory.com/81

 

[Nvidia CUDA] 윈도우에서 CUDA 설치 하기

안녕하세요 요즘 딥러닝 구현을 위해 열심히 공부 중인 코딩연습생입니다ㅎㅎ Anaconda3 설치 부터 하나씩 배워가며 포스팅을 진행하고 있는데요 과정중에 하나인 CUDA에 대해 포스팅 해보도록 하겠습니다 제일 먼..

codingman.tistory.com

 

이렇게 환경 설정을 모두 마치셨으면

 

다음 진행해야할 것은 Slim 이미지셋 설치와 TFRecord 생성 방법입니다

 

위의 내용은 아래 포스팅을 참조해서 따라해 주세요

 

https://codingman.tistory.com/78

 

[Deep Learning] Tensorflow slim 라이브러리 설치

안녕하세요 이번 시간 포스팅 내용은 텐소플로우에 모델을 추가하고 학습할수 있게 하기 위한 slim 라이브러리 설치 방법입니다 해당 포스팅을 검색해서 찾아오셨다면 이미 기본 적인 내용을 알고 오셨으리라 생각..

codingman.tistory.com

 

내용이 상당히 길기 때문에 포스팅을 나누어 올리고 있습니다

 

다소 헷갈릴수 있는데 어쩔수 없이 나눠 포스팅한점을 양해 주시기 바랍니다

 

이제 위의 레코드 파일 생성까지 완료 되셨다면 모든 환경 설정은 끝났습니다

 

이제 Deep Learning중 학습 방법에 대해서 Slim 모델을 통해 설명하도록 하겠습니다

 

저도 공부 중에 찾은 내용입니다만 학습 방법에 대해 여러가지 방법이 있습니다

 

그중에 제가 찾은것은 세가지 방법이 있었는데요

 

그중에 한가지 방법은 Tensorflow의 구버전으로 사용되는것으로 현재 저희 환경과 맞지 않아 구현이 불가능했습니다

 

그래서 저희가 설정한 환경에서 동작이 가능한 방법인 두가지를 설명해 드리겠습니다

 

1) Trainng a model from scratch

    - 저희가 만든 이미지셋을 가지고 신규 모델을 학습 하는 방법

    - Anaconda Prompt를 통해 다음 명령어를 실행

    * 명령어 간략 설명

      python train_image_classifier.py

      --train_dir=\tmp\train_inception_v1_flowers_logs # 모델 저장될 폴더
      --dataset_name=flowers # 이미지 셋 이름
      --dataset_split_name=train # 학습에 사용할 이미지 선택
      --dataset_dir=\tmp\flowers # 이미지 셋 위치
      --batch_size=16 # 기본 32이나 메모리 부족 에러 발생 -> 16 설정
      --model_name=inception_v1 # 사용할 모델 이름

python train_image_classifier.py --train_dir=\tmp\train_inception_v1_flowers_logs --dataset_name=flowers --dataset_split_name=train --dataset_dir=\tmp\flowers --batch_size=16 --model_name=inception_v1

오류가 발생하실수 있습니다 오류가 발생하였을 경우 py 파일을 약간 수정해 줍니다

 

다음 경로에 있는 train_image_classifier.py파일을 Spyder을 통해 열어 줍니다

 

아래와 같이 변경한뒤 저장합니다

 

다시 명령어를 실행 합니다

 

명령어가 실행되면사 step별 학습을 시작하는것을 보실수 있습니다

 

 

학습이 GPU의 성능에 따라 차이가 있을수 있지만 상당한 수분이 소요 됩니다

 

그래서 학습 중간에 중지 하고 싶으시면 Ctrl + C를 누루시면 종료 됩니다

 

학습이 완료되어 지면 다음과 같은 checkpoint 형식의 log가 생성됩니다

 

이어서 두번째 방식 입니다

 

2-1) Fine-tuning a model from an existing checkpoint

    - 마지막 layer만 새롭게 학습하는 과정

    - 완성도가 높은 모델을 사용할 수록 정확도가 올라가기 때문에 ImgaeNet에서 미리 학습된 모델을 다운 받아

      사용합니다

      (http:// http://download.tensorflow.org/models/inception_v1_2016_08_28.tar.gz)

불러오는 중입니다...

   - 압축을 푼뒤 inception_v1.ckpt 파일을  \tmp\my_checkpoints 폴더로 복사하세요.

 

   - 다음 명령어를 1번 방법과 동일하게 실행 시킵니다

python train_image_classifier.py
  --train_dir=\tmp\train_inception_v1_flowers_FineTune_logs
  --dataset_name=flowers
  --dataset_split_name=train
  --dataset_dir=\tmp\flowers
  --model_name=inception_v1
  --checkpoint_path=\tmp\my_checkpoints/inception_v1.ckpt
  --checkpoint_exclude_scopes=InceptionV1/Logits
  --trainable_scopes=InceptionV1/Logits
  --max_number_of_steps=1000
  --batch_size=16
  --learning_rate=0.01
  --learning_rate_decay_type=fixed
  --save_interval_secs=60
  --save_summaries_secs=60
  --log_every_n_steps=100
  --optimizer=rmsprop
  --weight_decay=0.00004

  - 1000번의 step이 완료된후 다음과 같이 checkpoint가 생성된 log가 생성됩니다

2-2) # Fine-tune all the new layers for 500 steps.

    - 전체 layer 학습하는 과정

python train_image_classifier.py


  --train_dir=\tmp\train_inception_v1_flowers_FineTune_logs\all
  --dataset_name=flowers
  --dataset_split_name=train
  --dataset_dir=\tmp\flowers

  --model_name=inception_v1

  --checkpoint_path=\tmp\train_inception_v1_flowers_FineTune_logs
  --max_number_of_steps=500
  --batch_size=16
  --learning_rate=0.0001
  --learning_rate_decay_type=fixed
  --save_interval_secs=60
  --save_summaries_secs=60
  --log_every_n_steps=10
  --optimizer=rmsprop
  --weight_decay=0.00004

 

이렇게 생성된 두가지 방법을 통해 3가지의 딥러닝 모델을 학습 시켜 봤습니다

 

정확도 확인을 위한 평가 방법입니다

 

1) Flowers로부터 새롭게 만든 모델

결과를 보시면 eval/Recall_5[1]의 의미는 5개의 Class 중에 하나라도 맞으면 맞다고 보는 정확도 입니다

[1]의 결과로 보면 100%로 라는 말이네요

실예측정확도의 경우는 eval/Accuracy[0.3675] -> 36% 정도로가 평가가 나오네요

 

2) 이미 잘 만들어진 모델로부터 Flowers로 마지막 layer만 학습해 만든 모델

매칭 유사율 100%

실예측정확도 86%라고 평가가 나오네요

 

3) 2)으로 만들어진 모델에서 전체 layer를 학습해 만든 모델

매칭 유사율은 역시 100%

실예측정확도는 90%로 평가가 됩니다

 

결론은 기존에 잘 학습된 모델을 활용해서 그 위에 분류하고 싶은 추가적인 이미지를 학습하는 것이

 

실예측 정확도를 가장 효과적으로 올릴수 있다는 결론이 나온거 같네요

반응형
반응형

안녕하세요

 

요즘 딥러닝 구현을 위해 열심히 공부 중인 코딩연습생입니다ㅎㅎ

 

Anaconda3 설치 부터 하나씩 배워가며 포스팅을 진행하고 있는데요

 

과정중에 하나인 CUDA에 대해 포스팅 해보도록 하겠습니다

 

제일 먼저 CUDA가 무엇인지가 궁금하실 겁니다 물론 이 포스팅을 검색해서 오신 분이시라면

 

당연히 알고 계실꺼지만 혹시 처음 오시는 분 또는 아직 개념 공부를 하고 있는 분들을 위해 간략하게

 

정의하자면 다음과 같습니다

 

CUDA란?

  - CUDA (Computed Unified Device Architecture) 는 NVIDIA 사에서 개발한 GPU (Graphic Processing Unit)

    개발 툴이다.

    CUDA는 전통적으로 CPU가 처리하였던 응용 프로그램의 계산을 GPU로 병렬처리 하도록 하는 기술의 일종

 

 

사실 이번 포스팅에서 CUDA가 무엇인지 몰라도 크게 문제는 되지 않습니다 

 

그냥 개념 정보만 알고 있어도 시작에 반이 끝난것이죠ㅎㅎ

 

이제 포스팅의 주제로 돌아와서 CUDA를 설치 하는 방법에 대해 설명 하겠습니다

 

먼저 Nvidia에서 제공해주는 Toolkit과 cuDNN SDK를 설치해야 합니다

 

1) CUDA Toolkit Archive

   - 저의 경우에는 CUDA 8.0을 설치 하였습니다

https://developer.nvidia.com/cuda-toolkit-archive

 

CUDA Toolkit Archive

Previous releases of the CUDA Toolkit, GPU Computing SDK, documentation and developer drivers can be found using the links below. Please select the release you want from the list below, and be sure to check www.nvidia.com/drivers for more recent production

developer.nvidia.com

2) cuDNN SDK

    - cuDNN의 경우 Nvidia에 로그인하셔야지만 다운로드가 되오니 로그인해서 다운로드 하세요

    - cuDNN의 경우 6.0 버전의 Windows10 버전용을 다운로드 했습니다

https://developer.nvidia.com/rdp/cudnn-download

불러오는 중입니다...

 

3) 다운로드 받은 CUDA 파일을 설치 합니다

    - 설치 화면은 생략하겠습니다 별 다른 이슈가 없이 그냥 Next로 설치하면 됩니다

    - 저의 경우 디폴트 경로에 설치하였습니다

    (C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0)

 

4) cuDNN 라이브러리 DLL 등록

   - 다운로드 받은 cuDNN 압축 해제를 하면 다음과 같은 폴더 3개로 구성되어 있습니다

   - CUDA가 설치되어 있는 폴더로 이동하여 동일 폴더 항목으로 세부 파일을 복사해 줍니다

   (cuDNN 폴더 안에 세부 파일을 -> CUDA 설치경로에 동일한 폴더 안으로 복사)

 

이렇게 해주시면 CUDA와 cuDNN 설치가 완료 되어 집니다

 

마지막으로 확인 하셔야 할것은 환경변수에 경로 설정이 올바르게 생성 되었는지만 확인하시면 됩니다

 

윈도우10에서 바로실행을 실행시킵니다

(아래 그림처럼 sysdm.cpl이라고 치시고 실행 시킵니다)

 

시스템속성창에서 고급 -> 환경 변수를 선택 합니다

 

 

 

CUDA_PATH와 CUDA_PATH_V8_0이 생성되었는지 확인 합니다

(CUDA_PATH_V8_0은 CUDA 버전에 따라 이름이 다를 수 있습니다)

 

환경 변수 생성까지 확인하셨다면 Tensorflow GPU를 사용하기 위한 CUDA 설치가 완료 된 것입니다

반응형
반응형

안녕하세요

 

이번 포스팅은 Anaconda에서 특정 버전의 텐서플로우를 설치 하는 방법을 설명 하도록 하겠습니다

 

CUDA나 CNN등을 사용할때 참 많은 환경 조건을 따집니다

 

그중에서 Python의 버전과 텐서플로우의 버전에 따라 참 많은 오류가 발생하게 되는데요

 

그럴때 Phthon의 버전에 알맞는 텐서플로우 버전을 지정해서 설치 할 수 있는 방법을 설명 드리겟습니다

 

1. Anaconda 명령 프롬프트 실행

    - 관리자 권한으로 실행하시기 바랍니다

 

2. 다음 명령어를 실행하여 텐서플로우를 설치합니다

   - 저는 Python 3.6 버전과 호환이 가능한 1.9버전을 설치 합니다

   - tensorflow-gpu는 gpu를 사용하는 텐서플로우 입니다

   - 일반 cpu를 사용할 경우 그냥 tensorflow로 치시면 됩니다

conda install tensorflow-gpu=1.9.0

 

3. 최종 확인 명령어

   - 'Y'를 입력하여 다음 단계를 진행해 주세요

 

4. 설치 진행

    - 최종 설치가 완료 될 때까지 기다려 주세요

    - 설치시 까지 수분이 소요 됩니다

 

 

5. 설치 완료 확인

   - 설치가 완료 되어 지면 다음과 같이 'done'가 나타납니다

 

6. 텐서플로우 테스트 해보기

    - tensorflow가 정상적으로 설치되고 실행되는지 확인을 합니다

    - 명령 프롬프트에 하나씩 구문을 실행 합니다

import tensorflow as tf
hello = tf.constant('Hello, Tensorflow!')
sess = tf.Session()
print(sess.run(hello))

 

b'Hello, Tensorflow!'라고 뜨신다면 정상 설치가 된것입니다

반응형
반응형

안녕하세요

 

코딩연습생 입니다ㅠ 개발 블로그를 운영하면서 이것저것 많이 정보를 올리고 있는데

 

해보고자 하는 연습물이 잘 안풀려서 요즘 1일 1포스팅이 잘 안 이루어지고 있습니다ㅠ

 

대충 포스팅 글 올리기에 집중하기 보단 좀 더 정확한 정보를 업로드 하고자 늦어지는것입니다

 

이번 포스팅은 Deep Learning을 구현해 볼려고 하는데요

 

Deep Learning란?

- 기계 학습 알고리즘의 집합(?)

   이런식으로 표현을 하는거 같습니다 딥러닝이라는것은 컴퓨터 비전, 머신런닝, 음성인식, 신호처리등

   모든 분야에서 기계 학습을 통한 훈련 기법 이다 라고 저는 생각합니다

 

딥러닝 기법을 사용하고자 할때 제일 많이 듣는 말이 텐서플로우(Tensorflow)인데요

 

그럼 텐서플로우는 또 뭐냐?

 

텐서플로우란?

 - 구글이 2011년에 개발을 시작하여 2015년에 오픈소스로 공개한 기계학습 라이브러리

    2016년 알파고와 함께 관심이 높아진 컨퍼런스임

    Python 언어로 되어 있는 텐서플로우는 다른 프로그래밍 언어들 연계하여 

    다양한 분야에 적용할 수 있음

 

뭐 인터넷에 이정도 포스팅 되어 있네요ㅎ

 

참 어렵습니다ㅎ

 

근데 이것을 왜 제가 하고 있는냐 단순합니다 기존 OpenCv를 통해 이미지 처리법을 공부하고

 

그 처리된 이미지를 통해 판독 시스템을 만들어볼 예정이거든요

 

근데 단순 판독이 아니라 시스템 자체 학습을 통해 신규 사물을 재정의하고 학습하면서

 

시스템에 보이는 이미지를 어떤 이미지라고 인식하는 프로그램을 만들려고 하다보니

 

이 영역까지 오게 되었습니다ㅎㅎ

 

그래서 어쨋든 핵심인 딥러닝을 구현하기 위해서는 텐서플로우가 필요하고 그 텐서플로우를 알려면

 

Python을 알아야한다는게 결론입니다

 

이래서 사설이 엄청 길어졌는데 이번 포스팅에서 윈도우에서 Python과 텐서플로우를 셋팅하는 방법을

 

포스팅 해볼려고 합니다

 

일단 윈도우에서 Python을 사용하기 위해 Anaconda라는 프로그램을 설치 할것입니다

 

1.Anaconda3 설치하기

  - 링크 주소를 통해 사이트에서 다운로드 받기

https://www.anaconda.com/distribution/

 

Anaconda Python/R Distribution - Free Download

Anaconda Distribution is the world's most popular Python data science platform. Download the free version to access over 1500 data science packages and manage libraries and dependencies with Conda.

www.anaconda.com

 

- 링크를 접속하신뒤에 Download 버튼 눌러 줍니다

 

- 적용하실려는 PC의 OS타입 그리고 OS비트에 맞는 링크를 눌러 다운로드를 실행합니다

- 다운 받은 실행 파일을 실행하여 설치를 진행해 주세요

 

 

- 경로 지정이 나올때까지 다음(Next) 버튼을 눌러주세요

 

- 경로 지정 부분이 나타나면 Default로 설치하셔도 되긴 합니다만

  기본 경로에 있는 ProgramData 폴더는 숨김 폴더라 삭제할때 조금 귀찮아 질 수 있어서

  저는 D:\에 Anaconda3라는 폴더로 지정하여 설치 하였습니다

   

 

 

- 이렇게 설치가 완료 되어지면 시작 메뉴에서 다음 메뉴를 "관리자 권한으로 실행해 주세요"

 

- 그러면 콘솔창이 하나 뜹니다 거기에 다음과 같으 명령어를 쳐주세요

 

conda upgrade pip

 

- 그 다음 pip 패키지 업데이트를 실행 합니다

pip install upgrade

 

※다음과 같은 오류가 날수가 있는데 저의 경우 패스 했습니다

 

- 다음은 텐서플로우 설치를 위한 가상환경을 만들어 줍니다

conda create -n 임의이름지정 python=3.6

 

- Proceed([y]/n)?이라고 물어보면 y를 눌러주고 엔터를 칩니다

 

 

- 생성된 가상환경을 활성화 시켜 줍니다

 

activate 지정된 임의 가상환경 이름

- 이렇게 하면 다음과 같이 (base)가 가상환경 이름으로 변경이 됩니다

 

- 그다음 텐서플로우를 설치 합니다

pip install tensorflow

 

 

- 설치가 모두 끝나고 나면 python을 실행 시켜줍니다

python

 

- 파이썬이 제대로 실행되는지 명령어를 칩니다

import tensorflow as tf
hello = tf.constant("hello, TensorFlow!")
sess = tf.Session()
print(sess.run(hello))

 

- 그런데 다음과 같은 오류가 뜨실수 있습니다

  (DLL load failed: 지정된 모듈을 찾을 수 없습니다)

 

- AVX(Advanced Vector Extensions)를 지원하지 않는 CPU를 사용할 경우 다음과 같은 오류가 납니다

 

- 이경우 텐서플로우를 다운그래이드 해줘야 합니다

 

pip install tensorflow==1.5

 

- 이렇게 다운그래이드를 실행한 다음에 다시 파이썬을 실행한뒤 명령어를 실행합니다

 

 

- 이렇게 출력이 되면 정상적으로 텐서플로우를 파이썬에서 호출해서 사용된것입니다

 

반응형

+ Recent posts