티스토리 뷰
Jason Brownlee's blog 번역
Keras에서 LSTM(Long Short Term Memory) 네트워크에 대한 입력 데이터를 재구성 하는 방법
기내식은수박바 2019. 8. 6. 17:05반응형
원본
- 당신의 LSTM 모델의 입력 시퀀스 데이터를 준비하는 방법에 대해 이해하는 것이 어려울 수 있음.
- 종종 LSTM 모델에 대해 입력층을 정의하는 방법에 대해 혼란이 있음.
- 또한, 당신의 숫자의 1차원 또는 2차원 행렬일 수 있는 시퀀스 데이터를 LSTM layer에 필요한 3차원 형식으로 변환하는 방법에 대한 혼란도 있음.
- 이 튜토리얼에서 당신은 LSTM 모델의 input layer를 정의하는 방법과 LSTM 모델에 대해 당신이 로드한 데이터를 재구성하는 방법을 발견할 것임.
- 이 튜토리얼을 완료한 후에, 당신을 알 것임:
- LSTM 입력층을 정의하는 방법.
- LSTM 모델에 대해 1차원 시퀀스 데이터를 재구성하고, 입력층을 정의하는 방법.
- LSTM 모델의 여러 병렬 시리즈 데이터를 재구성하고, 입력층을 정의하는 방법.
튜토리얼 개요
- 이 튜토리얼은 네 부분으로 나눠짐.
- LSTM 입력층.
- 단일 입력 샘플을 이용한 LSTM 예시.
- 다중 입력 특징(feature)들을 이용한 LSTM 예시.
- LSTM 입력 팁.
LSTM 입력층
- LSTM 입력층은 네트워크의 첫 번째 은닉층에"input_shape" 매개변수가 명시됨.
- 이 것은 초심자들 (beginnners) 에게 혼란을 야기할 수 있음.
- 예를 들어, 아래의 하나의 은닉층과 하나의 밀집된 (dense) 결과층을 이용한 네트워크의 예시임.
- 이 예시에서 LSTM 층은 입력의 모양을 명시해야함. 모든 LSTM층의 입력은 3차원일 것임.
- 이 입력의 3차원은 다음과 같음:
- 샘플 : 한 개의 시퀀스는 한 개의 샘플임. 배치는 하나 또는 그 이상의 샘플들로 이루어져 있음.
- 타임 스텝 : 한 개의 타임 스텝은 샘플내 관측의 한 지점임.
- 특징 : 한 개의 특징은 한 개의 타임 스텝 관측임.
- 이 것은 입력층이 모델에 적합시킬 때와 예측할 때 3차원 데이터 배열을 기대한다는 것을 의미함. 비록 배열의 구체적인 차원이 단일 값을 포함함 (하나의 샘플 또는 하나의 특징).
- 당신의 LSTM 네트워크의 입력층을 정의할 때, 네트워크는 당신이 1개 또는 그 이상의 샘플들을 가지고 있을 것이라고 가정하고 당신이 타임 스텝의 수와 특징의 수를 명시하도록 요구함.
- 당신은 "input_shape" 매개변수의 투플에 명시하여 이러한 것을 수행할 수 있음.
- 예를 들어, 아래의 모델은 1개 또는 그 이상의 샘플들과 50개의 타임 스텝, 그리고 2개의 특징이 예상되는 입력층을 정의한 것임.
- 이제 우리는 LSTM 입력층과 3차원 입력의 기대치를 정의하는 방법을 알게 됐으며, LSTM에 대한 데이터를 준비할 수 있는 몇 가지 예시들을 볼 것임.
단일 입력 샘플을 이용한 LSTM의 예시
- 당신이 여러 개의 타임 스텝을 가진 하나의 시퀀스와 하나의 특징이 있는 사례를 고려해보겠음.
- 예를 들어, 이 것은 10개의 값을 가진 한 시퀀스가 될 수 있음.
- 우리는 Numpy 배열로 숫자들의 시퀀스를 정의할 수 있음.
- 그런 다음, 우리는 이 1차원 배열을 각 타임 스텝마다 1개의 샘플, 10개의 타임 스텝, 1개의 특징을 가진 3차원 배열로 재구성하기 위해 Numpy 배열에 reshape() 함수를 사용할 수 있음.
- 배열에서 호출될 때의 reshape() 함수는 배열의 새로운 모양을 정의하는 투플을 하나의 매개변수로 취함.
- 우리는 어떤 숫자의 투플도 전달할 수 없음. reshape은 배열로 데이터를 균등하게 재조직해야함.
- 일단 재구성되면, 우리는 배열의 새로운 모양을 출력할 수 있음.
- 이 데이터는 이제 (10, 1) 의 "input_shape"을 가진 LSTM의 입력 (X) 로써 사용될 준비가 됐음.
다중 입력 특징들을 이용한 LSTM의 예시
- 당신의 모델에 대한 입력으로 다중 병렬 시리즈를 가진 사례를 고려해보겠음.
- 예를 들어, 이 것은 10개의 값을 가진 두 개의 병렬 시리즈가 될 수 있음.
- 우리는 이러한 데이터를 2열 10행의 행렬로 정의할 수 있음.
- 이 데이터는 10개의 타임 스텝과 2개의 특징을 가진 1개의 샘플로 구성될 수 있음.
- 다음과 같이 3차원 배열로 재구성될 수 있음.
- 이 데이터는 이제 (10, 2) 의 "input_shape"을 가진 LSTM의 입력 (X) 로써 사용될 준비가 됐음.
LSTM 입력에 대한 팁들
- 이 구역에서는 LSTM에 대한 당신의 입력 데이터를 준비할 때 당신에게 도움을 줄 수 있는 몇 가지 팁들을 나열함.
- LSTM 입력층은 3차원이여야 함.
- 3차원 입력이 의미하는 것은 다음과 같음 : 샘플, 타임 스텝, 그리고 특징.
- LSTM 입력층은 첫 번째 은닉층의 "input_shape" 매개변수에 의해 정의됨.
- "input_shape" 매개변수는 타임 스텝과 특징의 수를 정의하는 두 개의 값을 가진 투플을 취함.
- 샘플의 수는 1개 또는 그 이상이 될 수 있음.
- Numpy 배열의 reshape() 함수는 당신의 1차원 또는 2차원 데이터를 3차원으로 재구성하는데 사용될 수 있음.
- reshape() 함수는 새로운 모양을 정의하는 매개변수로써 투플을 취함.
요약
- 이 튜토리얼에서 당신은 LSTM에 대한 입력층을 정의하는 방법과 LSTM의 입력에 대한 당신의 시퀀스 데이터를 재구성하는 방법을 발견했음.
- 구체적으로, 당신이 배운 것들은 다음과 같음 :
- LSTM 입력층을 정의하는 방법.
- LSTM 모델에 대한 1차원 시퀀스 데이터를 재구성하고 입력층을 정의하는 방법.
- LSTM 모델에 대한 다중 병렬 시리즈 데이터를 재구성하고 입력층을 정의하는 방법.
반응형
'Jason Brownlee's blog 번역' 카테고리의 다른 글
165개의 Dataset에서 13개의 ML 알고리즘 비교 (Hint : 그라디언트 부스팅 사용) (0) | 2019.10.01 |
---|---|
머신 러닝에 관한 부스팅과 AdaBoost (0) | 2019.07.29 |
머신 러닝의 그라디언트 부스팅 알고리즘에 대한 친절한 소개 (1) | 2019.07.17 |
댓글