🐣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
딥러닝 프로세스
딥러닝 모델 구축 및 훈련을 위해서 다음과 같은 프로세스 만듬

딥러닝 라이브러리 -keras, tensorflow
케라스(Keras)
- 2015년 3월, 프랑스, 엔지니어, 프랑소와 숄레
- 고수준의 인공 신경망 학습을 지원하는 머신 러닝 API
- 텐서플로우 및 씨아노 등의 패키지 상에서 수행되는 딥러닝
- 웹사이트 https://keras.io 에서 확인 가능
- 딥러닝 라이브러리를 쉽고 간결한 코드로 실행할 수 있게 만들어주기 위해 사용자 친화적 직관적으로 설계되어 있음
텐서플로우(tensorflow)
- 머신러닝과 딥러닝을 위한 오픈소스 프레임워크
- 병렬처리 지원
- 고급 신경망 네트워크 모델을 쉽게 구현
- 웹상에서 머신러닝을 적용하기 위한 자바스크립트 라이브러리 지원
- 모방리 및 임베디드 시스템을 위한 머신러닝 기능도 제공
신경망 모델 설계 및 구현
케라스에서의 개발 과정
- 데이터에 적합한 모델 정의
- 손실 함수, 옵티마이저, 평가지표를 선택하여 학습 과정을 설정
- 모델 학습
- 학습 데이터 정의
- 모델 평가
- 개발 도구로써 케라스의 장점
- 직관적 인공 신경망 설계
- 직접, 신경망과 층을 구현하지 않고 Sequential, Dense를 사용

Keras 설계 : Sequential()

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’만 사용 가능