Keras는 무엇입니까? 심층 신경망 API 설명

심층 신경망이 모든 인기를 끌고 있지만, 주요 프레임 워크의 복잡성은 기계 학습을 처음 접하는 개발자가 사용하는 데 장애가되었습니다. 신경망 모델을 구축하기 위해 개선되고 단순화 된 고급 API에 대한 몇 가지 제안이있었습니다. 모두 멀리서 보면 비슷해 보이지만 자세히 살펴보면 차이점이 있습니다.

Keras는 선도적 인 고수준 신경망 API 중 하나입니다. Python으로 작성되었으며 여러 백엔드 신경망 계산 엔진을 지원합니다.

Keras 및 TensorFlow

TensorFlow 프로젝트는 곧 TensorFlow 2.0 릴리스에 대한 높은 수준의 API로 Keras을 채택하고 있음을 감안할 때, Keras는 것으로 보인다 경우 반드시 승자 우승자. 이 기사에서는 저수준 딥 러닝 API보다 개선 된 이유를 이해하기 위해 Keras의 원리와 구현을 살펴볼 것입니다.

TensorFlow 1.12에서도 공식 TensorFlow 시작하기 튜토리얼은 TensorFlow에 포함 된 고급 Keras API 인 tf.keras를 사용 합니다. 반대로 TensorFlow Core API는 TensorFlow 계산 그래프, 텐서, 작업 및 세션으로 작업해야합니다.이 중 일부는 TensorFlow로 작업을 막 시작했을 때 이해하기 어려울 수 있습니다. 주로 디버깅 할 때 낮은 수준의 TensorFlow Core API를 사용하면 몇 가지 이점이 있지만 다행스럽게도 필요에 따라 높은 수준과 낮은 수준의 TensorFlow API를 혼합 할 수 있습니다.

Keras 원칙

Keras는 사용자 친화적이고 모듈 식이며 확장하기 쉽고 Python과 함께 작동하도록 만들어졌습니다. API는 "기계가 아닌 사람을 위해 설계"되었으며 "인지 부하를 줄이기위한 모범 사례를 따릅니다."

신경 계층, 비용 함수, 최적화 프로그램, 초기화 체계, 활성화 함수 및 정규화 체계는 모두 결합하여 새 모델을 만들 수있는 독립형 모듈입니다. 새로운 모듈은 새로운 클래스와 함수로 추가하기 쉽습니다. 모델은 별도의 모델 구성 파일이 아니라 Python 코드로 정의됩니다.

왜 케 라스인가?

Keras를 사용하는 가장 큰 이유는 주로 사용자 친화적이라는 기본 원칙에서 비롯됩니다. 학습의 용이성과 모델 구축의 용이성 외에도 Keras는 광범위한 채택, 광범위한 프로덕션 배포 옵션에 대한 지원, 최소 5 개의 백엔드 엔진 (TensorFlow, CNTK, Theano, MXNet 및 PlaidML)과의 통합이라는 이점을 제공합니다. 다중 GPU 및 분산 교육에 대한 강력한 지원. 또한 Keras는 Google, Microsoft, Amazon, Apple, Nvidia, Uber 등이 지원합니다.

Keras 백엔드

Keras proper는 텐서 곱 및 컨볼 루션과 같은 자체 저수준 연산을 수행하지 않습니다. 이를 위해 백엔드 엔진에 의존합니다. Keras는 여러 백엔드 엔진을 지원하지만 기본 (및 기본) 백엔드는 TensorFlow이고 기본 지원자는 Google입니다. Keras API는 TensorFlow에으로 패키징되어 있으며 tf.keras, 앞서 언급했듯이 TensorFlow 2.0부터 기본 TensorFlow API가됩니다.

끝을 다시 변경하려면 간단하게 편집 할 $HOME/.keras/keras.json파일과 같은 다른 백엔드 이름을 지정 theano하거나 CNTK. 또는 KERAS_BACKEND셸 또는 os.environ["KERAS_BACKEND"]속성을 사용하는 Python 코드에서 환경 변수를 정의하여 구성된 백엔드를 재정의 할 수 있습니다 .

Keras 모델

모델 코어 Keras 데이터 구조이다. Keras에서 사용할 수있는 모델 에는 모델과 기능 API에 사용되는 클래스 의 두 가지 주요 유형이 있습니다 .SequentialModel

Keras Sequential 모델

Sequential모델 층의 선형 적층하고, 각 층은 매우 간단하게 설명 될 수있다. 다음은 모델 model.add()에서 두 개의 조밀 한 레이어를 정의 하는 데 사용하는 Keras 문서의 예입니다 Sequential.

수입 케 라스

keras.models에서 가져 오기 순차

keras.layers import Dense에서

#add 메소드를 사용하여 Dense 레이어가있는 순차 모델 생성

#Dense는 다음 작업을 구현합니다.

# output = activation (dot (input, kernel) + bias)

#Units는 레이어에 대한 출력 공간의 차원입니다.

은닉 유닛의 수와 같은 #

# 활성화 및 손실 함수는 문자열 또는 클래스로 지정할 수 있습니다.

model.add (Dense (units = 10, activation = "softmax"))

# 컴파일 방법은 모델의 학습 프로세스를 구성합니다.

              optimizer = "sgd",

              metrics = [ 'accuracy'])

# 맞춤 방법은 일괄 학습을 수행합니다.

# x_train 및 y_train은 Scikit-Learn API와 마찬가지로 Numpy 배열입니다.

# 평가 방법은 손실과 메트릭을 계산합니다.

훈련 된 모델의 경우 #

# 예측 방법은 훈련 된 모델을 입력에 적용합니다.

# 출력 생성

클래스 = model.predict (x_test, batch_size = 128)

위 코드의 주석은 읽을 가치가 있습니다. 낮은 수준의 TensorFlow API와 비교하여 실제 코드가 얼마나 작은 지 주목할 가치가 있습니다. 각 계층 정의에는 한 줄의 코드가 필요하고, 컴파일 (학습 프로세스 정의)에는 한 줄의 코드가 필요하며, 훈련 된 모델의 출력을 피팅 (학습), 평가 (손실 및 메트릭 계산), 예측하는 것은 각각 한 줄의 코드를 사용합니다. .

Keras 기능 API

Keras Sequential 모델은 단순하지만 모델 토폴로지가 제한적입니다. Keras 기능 API는 다중 입력 / 다중 출력 모델, 방향성 비순환 그래프 (DAG) 및 공유 레이어가있는 모델과 같은 복잡한 모델을 만드는 데 유용합니다.

기능적 API는 Sequential 모델과 동일한 레이어를 사용하지만 더 많은 유연성을 제공합니다. 기능적 API에서 먼저 레이어를 정의한 다음 모델을 생성하고 컴파일 한 후 피팅 (학습)합니다. 평가 및 예측은 기본적으로 Sequential 모델과 동일하므로 아래 샘플 코드에서는 생략했습니다.

keras.layers import Input, Dense에서

keras.models에서 모델 가져 오기

# 이것은 텐서를 반환합니다

# 레이어 인스턴스는 텐서에서 호출 가능하며 텐서를 반환합니다.

x = 밀도 (64, activation = "relu") (x)

예측 = Dense (10, activation = "softmax") (x)

# 이것은 다음을 포함하는 모델을 만듭니다.

# 입력 레이어와 세 개의 Dense 레이어

model.compile (optimizer = 'rmsprop',

              loss = "categorical_crossentropy",

              metrics = [ 'accuracy'])

model.fit (data, labels)  # 학습 시작

Keras 레이어

이전 예제에서는 Dense레이어 만 사용했습니다 . Keras는 미리 정의 된 다양한 레이어 유형을 제공하며 자신 만의 레이어 작성을 지원합니다.

핵심 계층에는 Dense(내적 + 편향), Activation(전달 함수 또는 뉴런 모양), Dropout(과적 합을 방지하기 위해 각 훈련 업데이트에서 입력 단위의 일부를 무작위로 0으로 설정), Lambda(임의의 표현을 Layer객체 로 래핑 ) 및 기타 여러 계층이 포함 됩니다. . 컨볼 루션 레이어 (피처 맵을 만들기 위해 필터 사용)는 1D에서 3D로 실행되며 각 차원에 대한 자르기 및 전치 된 컨볼 루션 레이어와 같은 가장 일반적인 변형을 포함합니다. 시각 피질의 기능에서 영감을 얻은 2D 컨볼 루션은 일반적으로 이미지 인식에 사용됩니다.

풀링 (다운 스케일링) 레이어는 1D에서 3D로 실행되며 최대 및 평균 풀링과 같은 가장 일반적인 변형을 포함합니다. 로컬로 연결된 레이어는 가중치가 공유되지 않는다는 점을 제외하면 컨볼 루션 레이어처럼 작동합니다. 반복 계층에는 단순 (완전히 연결된 반복), 게이트, LSTM 등이 포함됩니다. 이는 다른 응용 프로그램 중에서 언어 처리에 유용합니다. 노이즈 레이어는 과적 합을 방지하는 데 도움이됩니다.

Keras 데이터 세트

Keras는 keras.datasets클래스 를 통해 7 개의 일반적인 딥 러닝 샘플 데이터 세트를 제공합니다 . 여기에는 cifar10 및 cifar100 작은 컬러 이미지, IMDB 영화 리뷰, Reuters 뉴스 와이어 주제, MNIST 손글씨 숫자, MNIST 패션 이미지 및 보스턴 주택 가격이 포함됩니다.

Keras 응용 프로그램 및 예제

Keras는 또한 ImageNet에 대해 사전 학습 된 Keras Applications라는 10 개의 잘 알려진 모델을 제공합니다 : Xception, VGG16, VGG19, ResNet50, InceptionV3, InceptionResNetV2, MobileNet, DenseNet, NASNet, MobileNetV2TK. 이를 사용하여 이미지 분류를 예측하고, 이미지에서 특징을 추출하고, 다른 클래스 세트에서 모델을 미세 조정할 수 있습니다.

그건 그렇고, 기존 모델을 미세 조정하는 것은 훈련 속도를 높이는 좋은 방법입니다. 예를 들어 원하는대로 레이어를 추가하고 기본 레이어를 고정하여 새 레이어를 훈련시킨 다음 일부 기본 레이어를 고정 해제하여 훈련을 미세 조정할 수 있습니다. 을 설정하여 레이어를 고정 할 수 있습니다 layer.trainable = False.

Keras 예제 저장소에는 40 개 이상의 샘플 모델이 포함되어 있습니다. 비전 모델, 텍스트 및 시퀀스, 생성 모델을 다룹니다.

Keras 배포

Keras 모델은 다른 딥 러닝 프레임 워크보다 더 많은 광범위한 플랫폼에 배포 할 수 있습니다. 여기에는 CoreML (Apple에서 지원)을 통한 iOS가 포함됩니다. Android, TensorFlow Android 런타임을 통해 Keras.js 및 WebDNN을 통해 브라우저에서; Google Cloud에서 TensorFlow-Serving을 통해 Python webapp 백엔드에서; JVM에서 DL4J 모델 가져 오기를 통해 그리고 Raspberry Pi에서.

Keras를 시작하려면 설명서를 읽고 코드 저장소를 확인하고 TensorFlow (또는 다른 백엔드 엔진) 및 Keras를 설치 한 다음 Keras Sequential 모델에 대한 시작하기 자습서를 사용해보십시오. 거기에서 다른 튜토리얼로 넘어 가서 결국 Keras 예제를 살펴볼 수 있습니다.