pytorch lstm 예제

문서의 LSTM 예제입니다. 나는 다음과 같은 것들을 이해하지 못한다 : LSTM이 크기 seq_len x batch x hidden_dim의 출력 텐서 O를 생산한다고 가정 해 봅시다. 한 번에 하나의 예제에서만 피드되므로 일괄 처리는 항상 1입니다. 이것은 본질적으로 우리에게 크기 seq_len x hidden_dim의 출력 텐서 O를 제공합니다. 이제 이 출력 텐서에 다른 텐서 W 크기의 hidden_dim x embedding_dim을 곱하면 결과 텐서 R=O×W의 크기가 seq_len x embedding_dim입니다. 이것이 우리가 원했던 것과 정확히 다른가요? —> 75 손실 = 기준 = 런타임오류: 입력 및 대상 셰이프가 일치하지 않음: 입력 [49 x 1 x 1], 대상 [49] /Users/soumith/code/builder/src/src/src/src/thNN/generic/MSECriterion.c:12 궁금할 만한 부분 RNN의 출력을 추출합니까? 이것은 실제로 사용 사례가 무엇인지에 달려 있습니다. 예를 들어 분류 작업에 RNN을 사용하는 경우 클래스 확률 점수를 나타내는 벡터인 모든 입력을 전달한 후 하나의 최종 출력만 있으면 됩니다. 다른 경우에는 이전 문자/단어를 기반으로 텍스트 생성을 수행하는 경우 매 시간 마다 출력이 필요합니다. 이 시점에서, 우리는 다양 한 피드-포워드 네트워크를 보았다. 즉, 네트워크에서 유지 관리되는 상태가 전혀 없습니다. 이것은 우리가 원하는 동작이 아닐 수도 있습니다.

시퀀스 모델은 NLP의 중심입니다: 입력 간에 시간을 통해 일종의 종속이 있는 모델입니다. 시퀀스 모델의 고전적인 예는 음성 태그 지정에 대한 숨겨진 마르코프 모델입니다. 또 다른 예는 조건부 임의필드입니다. 먼저 일부 데이터를 준비해 보겠습니다. 이 예제에서는 일부 AR(5) 데이터를 생성했습니다. AR 데이터 생성에 대한 세부 정보를 게시물에 포함시켰습니다. 여기에서 데이터를 생성하는 코드를 찾을 수 있습니다. 이제 우리는이 프로젝트의 재미있는 부분에 도달했습니다! 토치 라이브러리를 사용하여 모델을 정의할 것이고, 완전히 연결된 레이어, 컨볼루션 레이어, 바닐라 RNN 레이어, LSTM 레이어 등 레이어를 추가하거나 제거할 수 있습니다! 이 게시물에서는 기본 nn.rnn을 사용하여 RNN을 사용하는 방법에 대한 간단한 예제를 보여 줍니다. 이는 nn 간의 예제의 차이를 분석하여 볼 수 있습니다. LSTM 및 NN. LSTMCell: 예를 들어 입력 출력 쌍(`ERPDRF`, `SECRET`)을 고려합니다.

5의 임베딩_dim을 사용하여 6글자 긴 입력 ERPDRF는 크기 6 x 1 x 5의 입력 텐서로 변환됩니다. hidden_dim이 10이면 입력은 LSTM에 의해 크기 6 x 1 x 10의 출력 텐서로 처리됩니다. 위의 예에서 각 단어에는 시퀀스 모델에 대한 입력으로 제공되는 포함이 있었습니다. 단어 의 문자에서 파생 된 표현으로 단어 포함을 보강 해 봅시다. 접미사와 같은 문자 수준 정보는 연설 의 일부에 큰 영향을 주기 때문에 이것이 크게 도움이 될 것으로 기대합니다. 예를 들어 -ly 가 있는 단어는 거의 항상 영어로 부사로 태그가 지정됩니다. 첫 번째 행은 순서대로 알파벳의 모든 문자를 보여줍니다. 메시지를 암호화하기 위해 첫 번째 행의 각 문자는 두 번째 행의 해당 문자로 대체할 수 있습니다. 예를 들어, 이-IS-A-비밀 메시지는 암호화될 때 FUVEMVEMNMERPDRF가 됩니다. 종종 이러한 벡터는 V×D 차원 임베딩 매트릭스E로 함께 저장되며, 여기서 행렬의 각 행 E[i]는 알파벳의 인덱스 i가 있는 문자에 대한 포함 벡터를 나타냅니다.

여기에 V는 어휘 (알파벳)의 길이입니다, 이는 우리의 경우 27입니다. 예를 들어 전체 포함 행렬 E는 아래 표시된 것과 비슷할 수 있습니다. 이 예제에서는 언어 모델링 작업에서 다층 RNN(엘만, GRU 또는 LSTM)을 학습합니다. 기본적으로 학습 스크립트는 제공된 위키텍스트-2 데이터 집합을 사용합니다. 그런 다음 생성 스크립트에서 학습된 모델을 사용하여 새 텍스트를 생성할 수 있습니다. 선형 레이어를 구현하려면… 당신은 그것을 짐작! 우리는 torch.nn.Linear의 인스턴스를 만듭니다.

¡Contactanos!