MLOps 프로젝트/도서 '케라스 창시자에게 배우는 딥러닝'

1부 3.2 케라스 소개

youjin86 2021. 8. 28. 16:16

1부 딥러닝의 기초

3장 신경망 시작하기


3.2 케라스 소개

케라스(keras)

딥러닝 모델을 만들기 위한 고수준의 구성 요소를 제공하는 모델 수준의 라이브러리

  • 케라스의 백엔드 엔진에서 제공하는 최적화되고 특화된 텐서 라이브러리 사용
    (텐서 조작이나 미분 같은 저수준의 연산은 다루지 않음.)
  • 하나의 텐서 라이브러리에 국한하여 구현되어 있지 않고 모듈 구조로 구성
  • 현재 3개의 백엔드 엔진으로 사용할 수 있음. (텐서플로, 씨아노, 마이크로 소프트 코그니티브 툴킷)

케라스 특징

  • 동일한 코드로 CPU와 GPU에서 실행할 수 있음.
  • 사용하기 쉬운 API를 가지고 있어 딥러닝 모델의 프로토타입을 빠르게 만들 수 있음.
  • (컴퓨터 비전을 위한) 합성곱 신경망, (시퀀스 처리를 위한) 순환 신경망을 지원하며 이 둘을 자유롭게 조합하여 사용할 수 있음.
  • 다중 입력이나 다중 출력 모델, 층의 공유, 모델 공유 등 어떤 네트워크 구조도 만들 수 있음.
  • 적대적 생성 신경망부터 뉴럴 튜링 머신까지 케라스는 기본적으로 어떤 딥러닝 모델에도 적합함.

 

모델을 정의하는 방법

1. Sequential클래스

가장 자주 사용하는 구조인 층을 순서대로 쌓아 올린 네트워크

from keras import models
from keras import layers

model = models.Sepuential()
model.add(layers.Dense(32, activation='relu', input_shape=(784,)))
model.add(layers.Dense(10, activation='softmax'))

2. 함수형 API

완전히 임의의 구조를 만들 수 있는 비순환 유향 그래프

모델이 처리할 데이터 텐서를 만들고 마치 함수처럼 이 텐서에 층을 적용함.

from keras import models
from keras import layers

input_tensor = layers.Input(shape=(784,))
x = layers.Dense(32, activation='relu')(input_tensor)
ouput_tensor = layers.Dense(10, activation='softmax')(x)

model = models.Model(inputs=input_tensor, outputs=output_tensor

 

모델 구조가 정의된 후, 이후 단계들은 동일