본문 바로가기

데이터 사이언스 DataScience/Deep Learning 딥러닝

[문과생의 TensorFlow] 01. 설치부터 첫 실행까지

0. 주저리주저리

고등학교 문과, 대학교 중국어 전공을 거쳐 흘러흘러

Software Engineer로 2년째 일하고 있는데 

그 핫하다는 AI, 딥러닝은 제대로 공부해본 적이 없습니다.

 

미분, 적분도 해보지 못한 수학Ⅰ 세대지만 컴퓨터의 힘을 빌려

TensorFlow와 함께 딥러닝, 데이터 사이언스 시작해봅니다.

 

중간에 너무 어려우면 결론 부분만이라도 읽으시길 추천드립니다.

 

 

1. 사전준비사항

   1) 마음가짐 : 뭐든지 할 수 있다는 마음가짐. 모르면 구글에 찾아보자라는 마음가짐.

 

   2) 파이썬 설치 : Python 3.7 버전 설치

                ('20.07.26 기준 TensorFlow는 Python 3.5~3.7을 지원하므로 최신버전인 3.8을 설치하면 안됩니다.)

 

   3) VS Code 설치 : TensorFlow 코드를 편집할 프로그램이 필요한데 개인적으로 선호하는 VS Code 설치

                           (설치 url : https://code.visualstudio.com/)

 

   4) CUDA 설치(선택) : Nvidia의 GPU를 사용 중이라면 GPU를 통해 더 빠르게 딥러닝을 실행할 수 있습니다.

                              AMD의 GPU는 현재 지원하지 않으며, 이 과정은 생략해도 상관없습니다.

                              (설치 가이드 url : https://www.tensorflow.org/install/gpu?hl=ko )

 

2. TensorFlow 설치

   1) 터미널 실행 (① 윈도우 시작키 누르고 ② "cmd" 검색 ③ "명령 프롬프트" 마우스 우클릭 후 "관리자 권한 실행")

 

   2) 터미널에서 명령어를 통한 TensorFlow 설치     

# Requires the latest pip
pip install --upgrade pip

# Current stable release for CPU and GPU
pip install tensorflow


3. VS Code 에서 코드 편집 후 실행해보기

  1) VS Code 실행 후 아무 파일이나 만들기 Ex> test.py

 

  2) 아래 코드 복사 붙여넣기 (출처 : https://www.tensorflow.org/overview?hl=ko )

import tensorflow as tf
mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)

 

  3) Tenminal에서 실행하기 (코드 편집창 마우스 우클릭 후 "Run Python File in Terminal" 클릭

 

   4) 실행결과 감상하기

TensorFlow가 학습을 통해 정확도를 높이는 아름다운 모습 감상

 

 

  5) 코드의 의미 공부해보기 (중요*)

Line1 : TensorFlow를 불러와서 tf라고 부르겠다 (아까 Terminal에서 pip install tensorflow를 통해 설치했었죠?)

Line2 : mnist라는 녀석은 손으로 쓴 숫자들로 이루어진 데이터베이스입니다. (아래 링크 참고)

        이미 만들어진 이 데이터베이스를 TensorFlow의 Keras의 Datasets에서 불러옵니다.

(참고자료 : https://ko.wikipedia.org/wiki/MNIST_%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4

 

MNIST 데이터베이스 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 MNIST 데이터베이스 (Modified National Institute of Standards and Technology database)는 손으로 쓴 숫자들로 이루어진 대형 데이터베이스이며,

ko.wikipedia.org

 

Line 4 : 이미 작성된 데이터베이스인 mnist에서 데이터를 불러와서 (x_train, y_train), (x_test, y_test)에 넣어줍니다.

          딥러닝에서는 보통 학습을 위한 데이터와, 그 학습된 모델이 정확한지 검증하는 검증 데이터를 나눕니다.

Line 5 : x_train과 x_test를 최초에 Integer(정수)형태 인데 Float(실수) 형태로 바꿔줍니다.

 

 

Line 7~12 : (참고 url - https://keras.io/ko/layers/core/ )

 

① 먼저 model이라는 변수를 선언한 다음에 Sequential (순차적) 방식을 통해 모델을 만들어줍니다. 말그대로 순서대로 위에 있는 손으로 쓴 숫자의 Layer를 쌓겠다는 뜻

 

② Flatten : 영어로 평탄하게 한다는 뜻이 있죠. input되는 shape(형태)가 28 x 28인데 그것을 1차원 구조로 

flatten 평탄하게 다 바꿔주겠다는 뜻입니다.

 

③ Dense : 영어로 밀도가 높다는 뜻이죠. Layer 층을 추가해줘 밀도를 높게 만들어줍니다. (128개의 입력을 받고

activation(활성화함수)으로 relu(렐루 함수, 은닉층에서 주로 사용) 를 사용하겠다는 뜻입니다.

(아직은 개별 활성화 함수가 뭔지는 잘 몰라도 됩니다. 전체적인 원리가 1차원으로 데이터를 펴주고 여러개의 Layer (손으로 쓴 숫자의 사진들)을 입력받아 relu라는 어떤 기법으로 활성화 시킨다 정도만 이해해도 됩니다.)

 

④ Dropout : Drop, Out 둘 다 뭔가 떨어뜨리고 뺀다는 의미이죠. 인풋받은 데이터에서 드롭시킬 유닛의 수를 정하는 함수입니다. 0~1 을 넣어(0%~100%) Drop 시킵니다. 이번엔 20% Drop이죠.

 

⑤ Dense : 아까 나왔죠. 다시 Layer층을 추가합니다. 이번엔 softmax라는 활성화함수를 썼네요. 소프트맥스 회귀라고도 합니다.

 

 

Line 14~16 : 위에서 만든 모델을 Compile 즉, 실행 시킵니다.

adam이라는 optimizer를 사용하고 sparse_cartegorical_crossentrophy라는 다중 분류 손실함수를 사용해서

accuracy를 평가기준으로 정하겠다는 의미입니다.

(아직은 뭐가 뭔지 몰라도 상관 없고 optimizer면 최적화하는 도구인가? 그리고 손실율 같은걸 어떤 기법으로 체크해서 결론적으로는 정확도를 평가하는군 정도로 생각하면 됩니다.)

 

 

 

Line 18 : 앞서 설정한 model에는 각종 공식과 방법을 넣어놨으니, 이제 실제 x, y 학습데이터를 넣겠다는 뜻입니다.

epochs 는 쉽게 말해 몇바퀴 돌아서 학습할래? 라는 뜻입니다. 학습데이터를 5번 돌려 라는 뜻이죠.

 

Line 19 : 이제 앞서 갖고 있는 test 검증 데이터로 만든 모델의 정확도를 평가해봅니다.

 

그 결과 

Epoch 1/5 → 5/5

즉, 5바퀴를 돌면서 60,000개 데이터를 넣어서 학습을 진행했고 각 학습별 loss와 accuracy가 나옵니다.

개선되는게 눈에 보이죠.

 

마지막에 검증데이터 10,000개를 넣었을때 약 97.6% 의 정확도를 갖는 것으로 나옵니다.

 

 

4. 느낀점

구체적인 딥러닝의 기법은 아직 잘 모르겠지만

TensorFlow에서 미리 코딩해놓은 여러 함수를 이용해

 

손으로 쓴 숫자를 학습시켰고 60,000번 * 5회 = 총 30만 번의 학습을 했더니

약 97.6%의 정확도를 갖춘 모델. 즉, 흔히 말하는 AI를 만들어냈습니다.

 

방금 만든 모델은 실제 OCR이라고 불리는 광학문자인식 기술의 출발점으로

(카메라로 글자나 숫자를 찍어 인식하는 기술)

 

갈 길은 멀지만 공부의 필요성은 더 느끼게 됐습니다.

 

 

기타 가이드 출처 : https://www.tensorflow.org/install?hl=ko

 

TensorFlow

시스템에 TensorFlow를 설치하는 방법을 알아봅니다. pip 패키지를 다운로드하거나 Docker 컨테이너에서 실행하거나 소스에서 빌드합니다. 지원되는 카드에서 GPU를 사용 설정합니다.

www.tensorflow.org

 

반응형