Path: blob/master/site/ko/guide/keras/sequential_model.ipynb
25118 views
Copyright 2020 The TensorFlow Authors.
Sequential 모델
설정
Sequential 모델을 사용하는 경우
Sequential
모델은 각 레이어에 정확히 하나의 입력 텐서와 하나의 출력 텐서가 있는 일반 레이어 스택에 적합합니다.
개략적으로 다음과 같은 Sequential
모델은
다음 함수와 동일합니다.
Sequential 모델은 다음의 경우에 적합하지 않습니다.
모델에 다중 입력 또는 다중 출력이 있습니다
레이어에 다중 입력 또는 다중 출력이 있습니다
레이어 공유를 해야 합니다
비선형 토폴로지를 원합니다(예: 잔류 연결, 다중 분기 모델)
Sequential 모델 생성하기
레이어의 목록을 Sequential 생성자에 전달하여 Sequential 모델을 만들 수 있습니다.
속한 레이어는 layers
속성을 통해 접근할 수 있습니다.
add()
메서드를 통해 Sequential 모델을 점진적으로 작성할 수도 있습니다.
레이어를 제거하는 pop()
메서드도 있습니다. Sequential 모델은 레이어의 리스트와 매우 유사하게 동작합니다.
또한 Sequential 생성자는 Keras의 모든 레이어 또는 모델과 마찬가지로 name
인수를 허용합니다. 이것은 의미론적으로 유의미한 이름으로 TensorBoard 그래프에 주석을 달 때 유용합니다.
미리 입력 형상 지정하기
일반적으로 Keras의 모든 레이어는 가중치를 만들려면 입력의 형상을 알아야 합니다. 따라서 다음과 같은 레이어를 만들면 처음에는 가중치가 없습니다.
가중치는 모양이 입력의 형상에 따라 달라지기 때문에 입력에서 처음 호출될 때 가중치를 만듭니다.
당연히 이것은 Sequential 모델에도 적용됩니다. 입력 형상이 없는 Sequential 모델을 인스턴스화할 때는 "빌드"되지 않습니다. 가중치가 없습니다(그리고 model.weights
를 호출하면 오류가 발생함). 모델에 처음 입력 데이터가 표시되면 가중치가 생성됩니다.
모델이 "빌드"되면, 그 내용을 표시하기 위해 summary()
메서드를 호출할 수 있습니다.
그러나 현재 출력 형상을 포함하여 지금까지 모델의 요약을 표시할 수 있도록 Sequential 모델을 점진적으로 빌드할 때 매우 유용할 수 있습니다. 이 경우 Input
객체를 모델에 전달하여 모델의 시작 형상을 알 수 있도록 모델을 시작해야 합니다.
Input
객체는 레이어가 아니므로 model.layers
의 일부로 표시되지 않습니다.
간단한 대안은 첫 번째 레이어에 input_shape
인수를 전달하는 것입니다.
이처럼 사전 정의된 입력 모양으로 빌드된 모델은 항상 가중치를 가지며(데이터를 보기 전에도) 항상 정의된 출력 형상을 갖습니다.
일반적으로 Sequential 모델의 입력 형상을 알고 있는 경우 항상 Sequential 모델의 입력 형상을 지정하는 것이 좋습니다.
일반적인 디버깅 워크플로우: add()
+ summary()
새로운 Sequential 아키텍처를 구축할 때는 add()
하여 레이어를 점진적으로 쌓고 모델 요약을 자주 인쇄하는 것이 유용합니다. 예를 들어 Conv2D
및 MaxPooling2D
레이어의 스택이 이미지 특성 맵을 다운 샘플링 하는 방법을 모니터링할 수 있습니다.
매우 실용적이죠?
모델이 완성되면 해야 할 일
모델 아키텍처가 준비되면 다음을 수행할 수 있습니다.
모델을 훈련시키고 평가하며 추론을 실행합니다. 내장 루프를 사용한 훈련 및 평가 가이드를 참조하세요.
모델을 디스크에 저장하고 복구합니다. 직렬화 및 저장 가이드를 참조하세요.
다중 GPU를 활용하여 모델 훈련 속도를 향상 시킵니다. 다중 GPU 및 분산 훈련 가이드를 참조하세요.
Sequential 모델을 사용한 특성 추출
Sequential 모델이 빌드되면 Functional API 모델처럼 동작합니다. 이는 모든 레이어가 input
및 output
속성을 갖는다는 것을 의미합니다. 이러한 속성을 사용하면 Sequential 모델 내의 모든 중간 레이어들의 출력을 추출하는 모델을 빠르게 생성하는 등 깔끔한 작업을 수행할 수 있습니다.
다음은 한 레이어에서 특성만 추출하는 것과 유사한 예입니다.
Sequential 모델에서 전이 학습 이용
전이 학습은 모델의 하단 레이어는 고정하고 상단 레이어만 학습하도록 구성되어 있습니다. 이에 익숙하지 않다면 전이 학습 가이드를 읽어보세요.
Sequential 모델과 관련된 두 가지 일반적인 전이 학습 청사진은 다음과 같습니다.
먼저 Sequential 모델이 있고 마지막 레이어를 제외한 모든 레이어를 고정하고 싶다고 가정해 보겠습니다. 이 경우 다음과 같이 model.layers
를 반복하고 마지막 레이어를 제외한 각 레이어에서 layer.trainable = False
를 설정하면 됩니다.
또 다른 일반적인 청사진은 Sequential 모델을 사용하여 사전에 훈련된 모델과 새롭게 초기화된 분류 레이어를 다음과 같이 쌓는 것입니다.
전이 학습을 수행하게 되면 이 두 가지 패턴을 자주 사용하게 될 것입니다.
이것이 Sequential 모델에 대해 알아야 할 전부입니다!
Keras에서 모델을 빌드하는 방법에 대한 자세한 내용은 다음을 참조하세요.