CodeOnWeb
로그인

[모델] Sequential

Sequential 모델의 다양한 메소드에 대하여 알아봅니다.

Kim Jeongmook 2017/07/17, 15:25

내용

Keras 레퍼런스 (37)

Keras 소개 [시작하기] Sequential 모델 가이드 [시작하기] 함수형 API 가이드 [시작하기] FAQ [모델] Keras의 모델 [모델] 함수형 API [모델] Sequential [계층] Keras의 계층 [계층] Core 계층 [계층] 합성곱 계층 [계층] 풀링 계층 [계층] 부분적으로 연결된 계층 [계층] 재발 계층 [계층] 임베딩 계층 [계층] Merge 계층 [계층] 고급 활성화 계층 [계층] 표준화 계층 [계층] 노이즈 계층 [계층] 계층 Wrappers [계층] 자신만의 Keras 계층 만들기 [전처리] 시퀀스 전처리 [전처리] 텍스트 전처리 [전처리] 이미지 전처리 Metrics 손실 최적화기 활성화 Callbacks 데이터셋 애플리케이션 백엔드 초기화기 정규화기 제한 시각화 Scikit-Learn API 유용한 도구

Sequential 모델 API

시작하기에 앞서, [시작하기] Sequential 모델 가이드를 읽어주세요.

모델의 유용한 속성

  • model.layers 은 모델에 추가된 계층의 리스트입니다.

Sequential 모델 메소드

compile

학습 과정의 환경을 구성합니다.

인수

  • optimizer: 문자열(최적화기의 이름) 혹은 최적화기 객체입니다(최적화기를 참조).
  • loss: 문자열(대상 함수의 이름) 혹은 대상 함수입니다(손실을 참조).
  • metrics: 훈련과 시험이 진행되는 동안 모델에 의해 평가될 metric의 리스트입니다. 보통 metrics=['accuracy']형태로 사용하게 될 것입니다(metrics를 참조).
  • sample_weight_mode: 시간 단계별로 샘플에 가중치를 줄 필요가 있을 때(2차원 가중치)에는 "temporal"로 설정하세요. 기본값인 "None"은 샘플 단위로 가중치를 주도록 합니다.(1차원)
  • **kwargs: Theano/CNTK 백엔드를 사용할 때는 K.function으로 전달됩니다.Tensorflow 백엔드를 사용할 때는 tf.Session.run로 전달됩니다.

예제


fit

정해진 횟수의 epoch 동안 모델을 훈련합니다.

인수

  • x: Numpy 배열 혹은 Numpy 배열의 리스트(복수의 입력을 가진 모델인 경우)이며 입력 데이터입니다.
  • y: Numpy 배열이며 레이블입니다.
  • batch_size: 정수이며 기울기를 업데이트할 샘플의 갯수 입니다.
  • epochs: 정수이며 모델을 훈련할 epoch 횟수 입니다.
  • verbose: 0 은 stdout에 로그를 주지 않으며, 1 은 진행 바 형태의 로그, 2 는 epoch 당 1 줄의 로그를 줍니다.
  • callbacks: keras.callbacks.Callback 인스턴스의 리스트이며 훈련 진행 중 적용될 callback의 리스트 입니다(callbacks를 참조).
  • validation_split: 실수이며(0. < x < 1) 검증 데이터로 구분된 데이터의 비율 입니다.
  • validation_data: 튜플 (x_val, y_val) 혹은 (x_val, y_val, val_sample_weights)이며 검증 데이터로 구분되는 데이터 입니다. validation_split에 오버라이드 됩니다.
  • shuffle: 부울 혹은 'batch'에 대해서는 문자열이며 매번의 epoch마다 샘플의 순서를 뒤섞을지 여부 입니다. 'batch'는 HDF5 데이터의 제한 사항을 취급하기 위한 특별한 옵션으로, batch 단위의 뭉치로 순서를 뒤섞습니다.
  • class_weight: 클래스를 가중치 값에 대응시키는 딕셔너리이며 (훈련 중에 한하여)손실함수를 스케일링하는 데에 스입니다.
  • sample_weight: Numpy 배열 형태의 훈련 샘플의 가중치이며, (훈련 중에 한해) 손실 함수를 스케일링할 때 쓰입니다. 입력 샘플과 동일한 길이의 1차원 Numpy 배열(즉 가중치와 샘플이 1:1로 대응) 혹은 시간적인 경우에는 매 샘플마다 시간 단계별로 다른 가중치를 적용하기 위해 (samples, sequence_length)과 같은 형태의 2차원 배열을 사용할 수도 있습니다. 이 경우에는 compile()에 sample_weight_mode="temporal"을 지정해야만 합니다.
  • initial_epoch: 훈련을 시작하게 되는 epoch입니다(이전에 진행하던 훈련을 재개할 때에 유용합니다).

반환값

History 객체가 반환됩니다. History.history 속성은 이어지는 epoch 각각에서의 훈련 손실 값과 metric 값을 기록하며 (가능한 경우에) 검증 손실 값과 metric 값도 기록합니다.

예외 발생

  • RuntimeError: 모델이 한 번도 컴파일되지 않았을 때 입니다.

evaluate

입력 데이터에 대해 batch 마다 손실을 계산합니다.

인수

  • x: Numpy 배열 혹은 Numpy 배열의 리스트(복수의 입력을 가진 모델인 경우)이며 입력 데이터입니다.
  • y: Numpy 배열이며 레이블입니다.
  • batch_size: 정수이며 매 기울기 업데이트마다의 샘플의 갯수입니다.
  • verbose: 세부 정보 모드, 0 혹은 1 중 택일합니다.
  • sample_weight: Numpy 배열이며 샘플의 가중치입니다.

반환값

스칼라 시험 손실(모델이 metric이 없는 경우) 혹은 스칼라의 리스트(모델이 손실값 외에 다른 metric을 가진 경우)를 반환합니다. model.metrics_names 속성은 스칼라 출력을 위한 표시 레이블을 줍니다.

예외 발생

  • RuntimeError: 모델이 한 번도 컴파일되지 않았을 때 입니다.

predict

입력 샘플에 대하여 예측값을 출력합니다.

입력 샘플은 매 batch마다 처리됩니다.

인수

  • x: Numpy 배열 형태의 입력 데이터입니다.
  • batch_size: 정수입니다.
  • verbose: 세부 정보 모드, 0 혹은 1 중 택일합니다.

반환값

Numpy 배열 형태의 예측을 반환합니다.


train_on_batch

한 batch의 샘플에 대해 하나의 기울기를 업데이트 합니다.

인수

  • x: Numpy 배열 혹은 Numpy 배열의 리스트(복수의 입력을 가진 모델인 경우)이며 입력 데이터입니다.
  • y: Numpy 배열이며 레이블입니다.
  • class_weight: 클래스를 가중치 값에 대응시키는 딕셔너리이며 (훈련 중에 한하여)손실함수를 스케일링하는 데에 쓰입니다.
  • sample_weight: Numpy 배열이며 샘플의 가중치입니다.

반환값

스칼라 훈련 손실(모델이 metric이 없는 경우) 혹은 스칼라의 리스트(모델이 손실값 외에 다른 metric을 가진 경우)을 반환합니다. model.metrics_names 속성은 스칼라 출력을 위한 표시 레이블을 줍니다.

예외 발생

  • RuntimeError: 모델이 한 번도 컴파일되지 않았을 때 입니다.

test_on_batch

한 batch의 샘플에 대해 모델을 평가합니다.

인수

  • x: Numpy 배열 혹은 Numpy 배열의 리스트(복수의 입력을 가진 모델인 경우)이며 입력 데이터입니다.
  • y: Numpy 배열이며 레이블입니다.
  • sample_weight: Numpy 배열이며 샘플의 가중치입니다.

반환값

스칼라 시험 손실(모델이 metric이 없는 경우) 혹은 스칼라의 리스트(모델이 손실값 외에 다른 metric을 가진 경우)을 반환합니다. model.metrics_names 속성은 스칼라 출력을 위한 표시 레이블을 줍니다.

예외 발생

  • RuntimeError: 모델이 한 번도 컴파일되지 않았을 때입니다.

predict_on_batch

한 batch의 샘플에 대해 예측값을 반환합니다.

인수

  • x: Numpy 배열 혹은 Numpy 배열의 리스트(복수의 입력을 가진 모델인 경우)이며 입력 데이터입니다.

반환값

Numpy 배열이며 예측을 반환합니다.


fit_generator

파이썬의 생성기에 의해 batch 단위로 생성된 데이터에 모델을 피팅합니다.

생성기는 효율을 위해 모델과 나란히 작동합니다. 예를 들어, GPU에서 모델을 훈련하는 것과 동시에 CPU에서 이미지를 생성시켜 실시간으로 데이터를 증가시키는 것이 가능해지는 것입니다.

인수

  • generator: 생성기입니다. 출력값은 반드시 다음과 같습니다.
    • 튜플 (inputs, targets)
    • 튜플 (inputs, targets, sample_weights). 모든 배열은 같은 갯수의 샘플을 가지고 있어야 합니다. 생성기는 데이터를 무한히 순환하도록 기대됩니다. 한 epoch는 모델에steps_per_epoch가 확인될 때만 끝납니다.
  • steps_per_epoch: 한 epoch의 종료를 선언하고 다음 epoch를 시작하기 전에 generator로부터 얻는 단계의 총 갯수입니다(샘플의 batch). 일반적으로 데이터셋의 고유 샘플 수를 batch 크기로 나눈 값과 같아야 합니다.
  • epochs: 정수이며 데이터에 대해 반복 수행할 총 횟수입니다.
  • verbose: 상세 정보 모드이며 0, 1, 2 중 택일합니다.
  • callbacks: 훈련 중 호출할 Callbacks의 리스트입니다.
  • validation_data: 아래 중 하나입니다.
    • 검증 데이터를 위한 생성기
    • 튜플 (inputs, targets)
    • 튜플 (inputs, targets, sample_weights).
  • validation_steps: validation_data가 생성기인 경우에만 관련이 있습니다. 각 epoch의 끝에 검증 생성기로부터 얻는 단계의 숫자입니다. 일반적으로 검증 데이터셋의 고유 샘플 수를 batch 크기로 나눈 값과 같아야 합니다.
  • class_weight: 클래스 인덱스를 가중치에 대응시키는 딕셔너리입니다.
  • max_queue_size: 생성기 큐의 최대 크기입니다.
  • workers: 가속을 위한 프로세스의 최대 갯수입니다.
  • use_multiprocessing: True인 경우, 프로세스 기반 스레딩을 사용합니다. 이 구현은 멀티프로세싱에 의존하기 때문에, 자녀 프로세스에 쉽게 넘겨질 수 없는 선택 불가능 인수를 넘기지 않아야 함에 주의하세요.
  • initial_epoch: 훈련을 시작할 Epoch 입니다(이전 훈련을 재개할 때 유용합니다).

반환값

History 객체를 반환합니다.

예외 발생

  • RuntimeError: 모델이 한 번도 컴파일되지 않았을 때입니다.

예제


evaluate_generator

데이터 생성기 상에서 모델을 평가합니다.

생성기는 test_on_batch 에 허용되는 것과 같은 종류의 데이터를 반환해야 합니다.

인수

  • generator: 튜플 (inputs, targets) 혹은 (inputs, targets, sample_weights)을 생성하는 생성기입니다.
  • steps: 중지되기 전까지 generator로부터 얻는 단계의 총 갯수입니다(샘플의 batch).
  • max_queue_size: 생성기 큐의 최대 크기입니다.
  • workers: 가속을 위한 프로세스의 최대 갯수입니다.
  • use_multiprocessing: True인 경우, 프로세스 기반 스레딩을 사용합니다. 이 구현은 멀티프로세싱에 의존하기 때문에, 자녀 프로세스에 쉽게 넘겨질 수 없는 선택 불가능 인수를 넘기지 않아야 함에 주의하세요.

반환값

스칼라 시험 손실(모델의 metrics이 없는 경우) 혹은 스칼라의 리스트(모델이 다른 metrics을 계산하는 경우)를 반환합니다. model.metrics_names속성은 스칼라 출력을 위한 표시 레이블을 줍니다.

예외 발생

  • RuntimeError: 모델이 한 번도 컴파일되지 않았을 때 입니다.

predict_generator

데이터 생성기로부터 입력 샘플에 대한 예측을 생성합니다.

생성기는 predict_on_batch에 허용되는 것과 같은 종류의 데이터를 반환해야 합니다.

인수

  • generator: 입력 샘플의 batch를 생성하는 생성기입니다.
  • steps: 중지되기 전까지 generator로부터 얻는 단계의 총 갯수입니다(샘플의 batch).
  • max_queue_size: 생성기 큐의 최대 크기입니다.
  • workers: 가속을 위한 프로세스의 최대 갯수입니다.
  • use_multiprocessing: True인 경우, 프로세스 기반 스레딩을 사용합니다. 이 구현은 멀티프로세싱에 의존하기 때문에, 자녀 프로세스에 쉽게 넘겨질 수 없는 선택 불가능 인수를 넘기지 않아야 함에 주의하세요.
  • verbose: 상세 정보 모드이며 0과 1중 택일합니다.

반환값

예측의 Numpy 배열을 반환합니다.


get_layer

모델의 일부인 계층을 복구합니다.

계층을 고유한 이름이나 그래프 상의 인덱스에 근거하여 반환합니다. 인덱스는 수평 그래프를 따르는 방향(낮은 값에서 높은 값으로) 순서를 따릅니다.

인수

  • name: 문자열이며 계층의 이름입니다.
  • index: 정수이며 계층의 인덱스입니다.

반환값

계층 인스턴스 를 반환합니다.


이 문서는 Keras의 Sequential을 번역한 것입니다.

최종 수정일: 2017년 8월 18일.

11888 읽음
이전 [모델] 함수형 API
다음 [계층] Keras의 계층

저자

토론이 없습니다

Please log in to leave a comment

16.5.11618.20190612.allo
문제 보고 · 사용조건 · 개인정보보호
래블업 주식회사 · 대한민국 서울 테헤란로 145 · 대표: 신정규 · 사업자번호: 864-88-00080 · +82 70-8200-2587

거절 확인

닫기
좋아요 책갈피 토론

아래 주소를 복사하세요