:-) 모든 도움을 주셔서 대단히 감사합니다이
당신은 두 개의 입력 (목표를위한 하나의 입력을위한 하나를 사용할 수 있습니다, 1의 존재의 오프셋 이 두 시퀀스 사이에서) 삽입 레이어를 재사용합니다. 문장을 [1, 2, 3, 4]로 입력하면 in = [1, 2, 3], out = [2, 3, 4]의 두 시퀀스를 생성 할 수 있습니다. 그런 다음 Keras 함수 API를 사용하여 삽입 레이어를 다시 사용할 수 있습니다.
emb1 = Embedding(in)
emb2 = Embedding(out)
predict_emb = LSTM(emb1)
loss = mean_squared_error(emb2, predict_emb)
사실 Keras 코드가 아닌 의사 코드입니다. 테스트 단계에서
:
일반적으로, 당신은 당신의 자신의 디코드 함수를 작성해야합니다. 첫째, 당신은 한 단어 (또는 몇 단어)를 선택합니다. 그런 다음이 단어 (또는 짧은 단어 시퀀스)를 네트워크에 공급하여 다음 단어의 삽입을 예측합니다. 이 단계에서 자신의 샘플 함수를 정의 할 수 있습니다. 예를 들어 다음 단어와 같이 예상되는 단어에 가장 가까운 단어를 선택하거나 다음 단어를 다음 단어로 샘플링 할 수 있습니다. 예측 된 임베딩에보다 가까운 임베딩은 선택 될 확률이 더 크다. 다음 단어를 선택하고 네트워크로 보내고 다음 단어를 예측하십시오.
따라서 전체 시퀀스를 네트워크에 입력하는 대신 한 번에 하나의 단어 (다른 방식으로 삽입)를 생성해야합니다. 위의 문장이 당신을 위해 너무 추상적 경우
, 여기에 좋은 예이다 : https://github.com/fchollet/keras/blob/master/examples/lstm_text_generation.py는
라인 (85)은 무작위로 작업 할 코퍼스에서 텍스트의 작은 조각을 선택 도입 부분이다. 90 번째 줄에는 루프가 있습니다. 각 단계에서 문자를 샘플링합니다 (이것은 char-rnn이므로 각 timestep은 char을 입력합니다.귀하의 경우에는 단어가 아닌 숯이어야합니다.) L95는 다음 char의 분포 L96 샘플을 예측합니다. 희망이 충분히 명확하다.
이 작업을 수행 했습니까? 그렇다면 코드/블로그 (또는 자체 응답)에 대한 링크 - 정확하게 표시된 대답은 당신이하고 싶은 회귀 접근법이 아니라 분류 접근법만을 보여줍니다. –