brunch

You can make anything
by writing

C.S.Lewis

by 서진호 Jun 09. 2020

초보자를 위한 텐서플로2 노트북

우연찮게 깃허브(GitHub) 탐색하다가 Aymeric Damien이라는 사람의 깃허브에 들어가서 보물을 발견하게 되었습니다. 텐서플로 초보 개발자들이 딱 보기 좋게, 그리고 곧바로 실행할 수 있도록 텐서플로 2.X 와 텐서플로 1.15 두 버전을 이용하여 자습서 형식의 노트북 예제 리스트들이 잘 정리되었기 때문이었습니다.


이 깃허브가 자그마치 Watch가 2.1K, Star가 37.7K, Fork가 14.2K 되는 아주 인기 높았습니다. 물론 저와는 일면식은 없지만 깃허브에 소개된 정보로 보아 중국 칭화대를 나와 현재 Snapchat에 근무하는 것으로 알고 있습니다.  


1. 선수 사항

먼저 모든 예제를 다운로드 받으려면, 다음과 같이 터미널 창에서 명령어를 실행하면 됩니다.

git clone https://github.com/aymericdamien/TensorFlow-Examples 


2. 텐서플로 2 설치

텐서플로 2.X 버전을 설치하려면, 초보자들은 아나콘다 환경을 이용하면 쉽게 사용할 수 있습니다. 터미널 창에서 먼저 conda 의 가상 환경을 만들어 주세요!


conda create -n my_tensorflow2_env python=3.5


GPU를 지원하는 시스템인지 아닌지를 파악 후에 다음과 같이 GPU를 지원하지 않으면 다음과 같이 명령어를 실행해 주십시오.

conda install tensorflow=2.2


GPU를 지원하면 다음과 같이 명령어를 실행해 주십시오.

conda install tensorflow_gpu=2.2


conda 에서 가상환경을 직접 실행하려면 다음과 같이 터미널 창에서 명령어를 실행해 주세요!

mac/linux 환경 일 때,      

source activate my_tensorflow2_env


windows 환경 일 때,       

activate my_tensorflow2_env


conda 에서 가상 환경을 해제 시키려면 다음과 같이 터미널 창에서 명령어를 실행해 주세요!

mac/linux  환경일 때,     

source deactivate 


windows 환경 일 때,      

deactivate


3. 텐서플로 맛보기 


참고로 notebook 클릭하면 곧바로 깃허브의 notebook 파일(ipyub)을 불러오기 때문에 네트워크 트래픽상 다소 시간이 걸릴 수 있습니다.  


HelloWorld (notebook) - 텐서플로 2.0 를 이용하여 간단하게 "Hello, World" 를 출력하기

Basic Operations (notebook) - 텐서플로 2.0을 이용하여 기본적인 텐서 연산 예제.   


4. 기본 모델들 

Linear Regression (notebook) - 텐서플로 2.0을 이용하여 선형 회귀를 구현하는 예제

Logistic Regression (notebook) - 텐서플로 2.0을 이용하여 로지스틱 회귀를 구현하는 예제

Word2Vec(Word Embedding) (notebook) - 텐서플로 2.0으로 위키피디아 데이터로부터 워드 임베딩 모델(Word2 Vec)을 생성하는 예제

  

5. 주도 학습 딥러닝(Supervised)  

Simple Neural Network (notebook) -  간단한 신경망으로 MNIST 숫자 데이터셋을 분류해서 인식하기 위한 텐서플로 2.0의 '레이어(layer)'와 '모델(model)'을 사용하는 예제 

Simple Neural Network(low-lovel)(notebook) - 낮은 수준의 신경망(멀티레이어 퍼셉트론)으로 MNIST 숫자 데이터셋을 분류해서 인식하는 예제

Convolutional Neural Network (notebook) - 합성곱 신경망을 생성해서 MNIST 숫자 데이터셋을 분류해서 인식하는 예제

Convolution Neural network (low-level) (notebook) - 낮은 수준으로 구현된 합성곱 신경망을 생성해서 MNIST 숫자 데이터셋을 분류해서 인식하는 예제

Recurrent Neural Network(LSTM) (notebook) - 텐서플로 2.0의 'layer' 와 'model' API를 사용한 순환적 신경망을 생성하여 MNIST 숫자 데이터셋을 분류해서 인식하는 예제 

Bi-directional Recurrent Neural Network (LSTM) (notebook) - 텐서플로 2.0의 'layer' 와 'model' API 를 사용한 양방향 순환적 신경망을 생성하여 MNIST 숫자 데이터셋을 분류해서 인식하는 예제 

Dynamic Recurrent Neural Network (LSTM) (notebook) -  텐서플로 2.0의 'layer'와 'model' API를 사용한 변수 길이의 시퀀스를 분류해서 동적 계산을 하는 순환적 신경망을 생성하여 인식하는 예제 


6. 비주도 학습 딥러닝(Unsupervised)  

Auto-Encoder (notebook) - 이미지를 인코딩한 자동 인코더(auto-encoder)로 더 저급 차원과 이미지를 재생성하는 예제 

DCGAN(Deep Convolutional Gnerative Adversarial Network)(notebook) - 심층 합성곱 적대적 생성 네트워크를 이용하여 노이즈로부터 이미지들을 생성하는 예제   


7. 유틸리티 모음  

Save and Restore a model (notebook) - 텐서플로 2.0으로 모델을 저장하고 재 저장하는 예제

Build Custom Layers & Modules (notebook) - 텐서플로 2.0을 이용하여 자기 자신들의 레이어 및 모듈을 생성하고 그것을 통합시키는 방법을 배우는 예제  


8. 데이터 관리 (TFDatasets, TFRecords)  

Load and Parse Data (notebook) - 텐서플로 2.0을 이용하여 효율적인 데이터 파이프라인을 생성하는 예제 (Numpy 배열들, Images, CVS files, 제너레이터로 부터 커스텀 데이터,...)

Build and Load Data as TFRecords (notebook) - 텐서플로 2.0을 이용하여 데이터를 TFRecords 포맷으로 변경하고 그것을 불러오는 예제  

Image Transformation(i.e. Image Augementation) (notebook) - 텐서플로 2.0을 이용하여 다양한 이미지 증강법을 적용시키는 예제. 특히, 훈련 시 왜곡된 이미지들을 생성하는 것. 


9. 로컬 PC/MAC 및 클라우드에서의 예제 실행 

로컬에 있는 PC 데스크탑 또는 맥에서 예제들을 실행시켜 주기 위해서는 위의 제 1 장과 제 2장을 참조해 주세요. 모든 노트북 코드는 아나콘다(anaconda)를 이용하여 Jupyter Notebook를 이용하면 다운로드 받은 노트북 코드를 쉽게 실행할 수 있습니다. 그 외에는 Visual Studio Code에서 Notebook exentions을 이용해도 사용할 수 있습니다. 또한 Python 소스 코드로 변경하여 PyCharm에서도 실행할 수 있습니다. 


또한 클라우드에서 실행하기 위해서는 AWS는 SageMaker 에서, Azure 에서는 Azure Notebooks, 그리고 구글 클라우드에서는 AI Platform 에서 실행할 수 있습니다. 끝으로 텐서플로 자격증에 도전하시는 분들께 직접 코드를 실행해서 배울 수 있으므로 크게 도움되리라 예상합니다.


다음 편에서 텐서플로 1.0 예제들을 정리하겠습니다. 텐서플로 1.0 예제는 여기를 눌러 주세요!   


Aymeric Damien 깃허브: https://github.com/aymericdamien/TensorFlow-Examples
TensorFlow 개발자 웹사이트: https://www.tensorflow.org/
TensorFlow 설치 방법: https://www.tensorflow.org/install
텐서플로 자격증 안내: https://www.tensorflow.org/certificate?hl=ko



브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari