🐣python

딥러닝_구현과_keras

category
🐣python
URL
date
Feb 21, 2023
slug
deep-learning-keras-tensorflow
author
status
Public
tags
Playdata_deep-learning & machine-learning
summary
type
Post
thumbnail
updatedAt
Mar 2, 2023 03:00 AM

딥러닝 프로세스

딥러닝 모델 구축 및 훈련을 위해서 다음과 같은 프로세스 만듬

notion image

딥러닝 라이브러리 -keras, tensorflow

 

케라스(Keras)

  • 2015년 3월, 프랑스, 엔지니어, 프랑소와 숄레
  • 고수준의 인공 신경망 학습을 지원하는 머신 러닝 API
  • 텐서플로우 및 씨아노 등의 패키지 상에서 수행되는 딥러닝
  • 딥러닝 라이브러리를 쉽고 간결한 코드로 실행할 수 있게 만들어주기 위해 사용자 친화적 직관적으로 설계되어 있음

텐서플로우(tensorflow)

  • 머신러닝과 딥러닝을 위한 오픈소스 프레임워크
  • 병렬처리 지원
  • 고급 신경망 네트워크 모델을 쉽게 구현
  • 웹상에서 머신러닝을 적용하기 위한 자바스크립트 라이브러리 지원
  • 모방리 및 임베디드 시스템을 위한 머신러닝 기능도 제공
 

신경망 모델 설계 및 구현

케라스에서의 개발 과정

  • 데이터에 적합한 모델 정의
  • 손실 함수, 옵티마이저, 평가지표를 선택하여 학습 과정을 설정
  • 모델 학습
  • 학습 데이터 정의
  • 모델 평가
  • 개발 도구로써 케라스의 장점
    • 직관적 인공 신경망 설계
    • 직접, 신경망과 층을 구현하지 않고 Sequential, Dense를 사용
notion image

Keras 설계 : Sequential()

notion image
Sequential Class
  • 순차적으로 층을 쌓은 신경망 모델
  • 케라스 모델을 생성하는 가장 간단한 방법
  • 층을 이어 붙이듯 시퀀시에 맞게 일렬로 연결하는 방식
  • 입력 레이어에서 출력 레이어까지 순서을 갖음
  • 입력 데이터는 시퀀스의 가장 앞에 위치한 층에 투입되고 순서대로 각 층을 하나씩 통과하면서 딥러닝 연산 수행
  • 쌓고자 하는 레이어의 수는 제한이 X
  • 장점
    • 직관적으로 모델 구조를 이해할 수 있음
  • 단점
    • 2개 이상의 다중 입력이나 다중 출력을 갖는 복잡한 구조를 만들 수 없다
    • Function API로 해결 가능
 
Dense Class
  • 완전 연결층
  • 심층 신경망 모델을 구성하는 가장 기본 레이어
  • 각 레이어와 레이어 사이의 모든 노드가 연결되어 있기 때문에 완전 연결층(Fully Connected Layer)라고 부름
  • 은닉층과 출력층을 Dense 클래스의 객체로 구성, 각각의 객체를 Sequential 클래스 객체에 추가
  • 케라스는 모델과 층이 명확하게 구분되며, 레이어(층)를 다른 레이어와 교체하기도 쉬움
 

Keras 설계 : Dense()

[전달할 매게 변수]
  • unit : 은닉층의 뉴련(노드) 개수 (개발자 지정)
  • activation : 활성화 함수( 기본값 None, 따로 지정하지 않으면 활성화함수가 적용 x)
  • kernel_initializer : 가중치 규제, Keras는 가중치를 커널이라고 부
 

Keras 설계 : 입력 데이터 형태

  • Sequential API를 사용하여 모델을 구성할 때 반드시 첫 번째 층은 input_shape 매개변수(튜플 또는 리스트)를 지정
 

Tensorflow, Keras를 활용한 딥러닝 구현

모델 요약 관한 사진, 가중치 부분도 더해줘야한
모델 요약 관한 사진, 가중치 부분도 더해줘야한
 

모델 학습 과정 설정 - 컴파일

  • y_label을 원한 인코딩하지 않은 경우에는 loss=’sparse_categorical_crossentropy’만 사용 가능
  • y_label을 원핫 인코딩한 경우에는 ‘categorical cross entropy’만 사용 가능