lstm 예제코드

Keras는 놀라운 라이브러리입니다 : 그것은 우리가 이해할 수있는 파이썬 코드의 몇 줄에 최첨단 모델을 구축 할 수 있습니다. 다른 신경망 라이브러리가 더 빠르거나 더 많은 유연성을 허용할 수 있지만 개발 시간과 사용 편의성에 대해 Keras를 이길 수 있는 것은 없습니다. lstms에서 찾을 수 있는 최상의 설명입니다. 인코더-디코더 아키텍처와 주의 메커니즘을 설명할 수도 있습니까? 다변량 타임계가 cnn-lstm 모델에 적용될 수 있습니까? 처음 몇 줄에서 x 및 y 출력 배열이 만들어집니다. 변수 x의 크기는 이해하기에 매우 간단합니다 – 첫 번째 차원은 일괄 처리에서 지정한 샘플 수입니다. 두 번째 차원은 예측을 기반으로 하는 단어의 수입니다. 변수 y의 크기는 조금 더 복잡합니다. 첫 번째는 배치 크기를 첫 번째 차원으로 한 다음 위에서 설명한 대로 두 번째 차원으로 시간 단계 수가 있습니다. 그러나 y는 이 경우 10,000어휘의 크기와 동일한 추가 3차원을 가수합니다. 내 TensorFlow 큐 및 스레드 자습서에서 설명한 대로 학습 하는 동안 모델에 데이터를 제공 하는 피드 사전의 사용, 자습서에서 일반적인 동안, 효율적이 지 않습니다-TensorFlow 사이트에서 여기에서 읽을 수 있습니다. 오히려 TensorFlow 큐 및 스레딩을 사용하는 것이 더 효율적입니다. 이 자습서에서는 사용되지 않는 Dataset API를 사용하여 작업을 수행하는 새로운 방법이 있지만 나중에 이 새로운 작업을 포함하도록 업데이트할 것입니다. batch_producer라는 함수에서이 코드를 패키지화했습니다 .이 함수는 x, y 학습 데이터의 일괄 처리를 추출합니다 .

y 일괄 처리는 지연된 한 번 단계를 제외하고 동일한 데이터입니다. 예를 들어, 일괄 처리의 단일 x, y 샘플은 시간 단계 수가 8인 것처럼 보입니다: 데이터 집합의 입력(X) 및 출력(Y) 요소가 샘플 수, 시간 단계에 대한 3차원임을 알 수 있습니다. 및 변수 또는 병렬 시간계각각. 그래서, 우리가 슬라이딩 윈도우를 사용하는 경우 각 시간 시리즈에 대한 34 창이있다. 그래서, 내 초기 X_train의 모양을 가지고 (3400,15). 다음. 다음과 같이 X_train [샘플, 시간 단계, 기능]을 재구성하고 있습니다. genera에서 이 다중 입력 다중 단계 예측에서 “시간 단계”와 “기능”인수를 어떻게 선택할 수 있습니까? 이제 준비된 샘플을 필요한 구조로 바꿀 수 있습니다. 다음 몇 단계에서는 배치 샘플에 대한 예측에서 정확도를 계산하기 위해 몇 가지 작업을 설정합니다.

예를 들어, 먼저 유니변량 타임시리즈 데이터를 입력으로 4단계, 하나는 출력으로 입력/출력 샘플로 분할할 수 있습니다. 그런 다음 각 샘플을 두 개의 하위 샘플로 나눌 수 있으며 각 샘플은 두 개의 시간 단계로 나눌 수 있습니다. CNN은 두 시간 단계의 각 하위 시퀀스를 해석하고 입력으로 처리할 LSTM 모델에 하위 시퀀스의 해석의 타임시리즈를 제공할 수 있습니다. 위의 코드에서 먼저 원시 텍스트 데이터는 int32 텐서로 변환됩니다. 다음으로 전체 데이터 집합의 길이가 data_len에 계산되고 저장되며 이 값은 정수 분할(//)의 일괄 처리 크기로 나누어 데이터 집합 내에서 사용할 수 있는 전체 데이터 일괄 처리 수를 가져옵니다. 다음 줄은 raw_data tensor(크기가 0에서 batch_size * batch_len까지)로 변경됩니다(batch_size, batch_len) 모양으로 변경됩니다. 다음 줄은 각 시대의 반복 횟수를 설정합니다. 이는 데이터(batch_len)의 일괄 처리 수를 시간 단계 수로 나눈 값입니다.