딥러닝2

2020. 10. 20. 22:25

딥러닝 프레임워크

 - 다양한 요소를 통해 고수준의 언어로 딥러닝을 사용할 수 있는 인터페이스를 제공함

 - 다양한 요소의 예: HW자원(GPU, CPU, TPU, FPGA등), 각 HW에 맞는 라이브러리(NVIDIA GPU의 경우 CUDA와 cuDNN, FPGA의 경우 VHDL), 해당 라이브러리를 사용하는 연산 라이브러리(선형대 수학 계산 라이브러리, 병렬계산 라이브러리, 영상처리 라이브러리),

                     연산 라이브를 사용하는 딥러닝을 위한 학습/테스트 라이브러리, 해당 라이브러리를 사용하여 각 프로그래밍언어로 추상화된 API(응용프로그램 프로그래밍 인터페이스, Application Programming Interface)


 - 프레임워크 사용의 장단점

    장: API 사용법만 알면 쉽게 구현가능, 최적화가 알아서 되어 있음, 수치 연산 문제로부터 독립적임(연산 알고리즘은 이미 구현되어 있으니), 디바이스에 종속되지 않은 코드 작성가능

    단: API에서 제공하지 않는 기능은 구현이 어려움, 프레임워크가 제공하는 수준이상의 최적화가 어려움, API에 의존적이라 API버전에 영향을 받으며, API의 버그에 대해 취약함


 - 종류

    tensorflow: 가장 많이쓰임, 저수준라이브러리로서 유연성이 뛰어남(Keras 기반의 2.0 업데이트로 고수준의 라이브러리로 업데이트 됨), 구글에서 개발, 오픈소스, 파이썬/자바스크립트/C++/자바/go/swift등의 API지원

    torch: Lua기반, 페이스북, 트위터등에서 연구용도로 사용, 유연성과 모델제작의 단순함을 추구, Python기반의 API를 사용하는 pytorch가 유명함

    Keras: 단순한 API로 고수준의 라이브러리로 구성, theano와 tensorflow를 벡엔드로 사용, Python API만을 지원함, tensorflow 2.0부터 Keras가 정식으로 포함됨

    caffe: 버클리 대학에서 개발하였으며, 초창기 딥러닝 연구에서 많이 사용됨, 자체적인 스크립트 언어를 사용함, C++라이브러리를 기반으로 Python API도 제공함

    theano: 최초의 딥러닝 라이브러리중 하나, 저수준의 라이브러리로서 딥러닝 모델을 직접구현하는데 유리, 확장성이 떨어지며 다중 GPU지원이 부족하다, 초기 Keras의 백엔드로 사용됨

    matconvnet: matlab기반의 프레임워크, matlab에서 gpu를 사용한 cnn구현을 위해 많이 사용됨, matlab에서 자제 딥러닝 라이브러리를 제공하면서 개발이 중단됨(~2017,18)


 - 실습환경: tensorflow

    아나콘다 설치 - anaconda prompt실행 - conda env list(사용하는 가상환경정보를 보여줌, base는 아나콘다 자체를 의미, py36은 파이썬 3.6을 의미)

    conda create --name tf2.0 python=3.7(텐서플로우 2.0설치를 위해 파이썬 3.7설치 이름은 마음대로) - y(기본적으로 python 3.7버전에 관련된 환경이 설치됨)

    위의 경우 tf2.0 명령어로 실행가능 - conda activate tf2.0(콘솔 명령창 앞쪽에 (base)에서 (tf2.0)으로 변경됨)

    pip list 현재 설치된 파이썬의 패키지를 열람

    install tensorflow==2.0 여기에 텐서플로우를 설치 -> 버전은 tensorflow.org에서 확인 가능함(홈페이지 메뉴바의 API항목에서 확인)

     -> 만약설치중 멈추면 엔터를 누르면 계속 설치된다.

    conda install jupyter - y

     -> 만약 cpu가 아닌 gpu 버전의 텐서프로우를 사용하려면 gpu에 맞는 CUDA와 cuDNN을 설치해야함

    jupyter notebook 주피터 노트북 실행(주피터 노트북은 파이썬의 학습환경으로 많이사용되는 환경이다.)

    브라우처장 열림

    새파일 생성후 학습환경 확인하기

      import tensorflow as tf  (텐서플로우 패키지만 사용)

      print(tf.__version__) -> 2.0.0이 설치된것이 나옴

    ** 사용을 다한 프로그램은 shutdown버튼을 눌러 해당 커널을 종료할것(사용중인 cpu 및 gpu ram을 free한다.)


 - 실습 방식

    import modules - 데이터 불러오기(텐서플로우 API사용) - 네트워크 구조 정의(Keras에 있는 모델 중 한가지 사용) - Keras 모델 컴파일(최적화 방식, 손실함수, 평가지표 설정 및 선정)

     - 학습수행(model.fit 함수 사용 모델을 입력에 맞추어 피팅을 진행함, ex: model.fit(x,y,epochs=5) 전체 시험데이터 x와 y에 대해 5번 학습을 수행함)

     - 학습결과 테스트(테스트를 통해 결과 확인, ex: model.evaluate(x,y))











'Study > Deep_Machine learning' 카테고리의 다른 글

딥러닝1  (0) 2020.10.03
불균형 데이터  (0) 2020.09.20
클러스터링  (0) 2020.09.06
앙상블기법  (0) 2020.09.06
기본적인 머신러닝 모형  (0) 2020.08.22

+ Recent posts