2016-10-08 5 views
-1

LSTM 모델의 입력 벡터에 대해 혼란 스럽습니다. 사용중인 데이터는 텍스트 데이터입니다 (예 : 1,000 문장.Keras의 LSTM 입력

1. 벡터에 문장을 토큰 화하면 (문장 벡터라고 부를 수 있음) Keras에서 문서가 주어진 문장 벡터를 만드는 방법이 있습니까? 단어 수준일까요?

2. 두 번째 질문은 LSTM의 3D 텐서 유형입니다. LSTM이 매 시간 단계마다 하나의 문서를 읽으려는 경우 1,000 문장 (샘플)과 time_step이 1이됩니다. 맞습니까? 마지막 것은 입력 차원입니다.이 입력 차원은 각 문장의 단어 dimension (100) 또는 각 시간 단계 (10)에서 관찰 된 단어 수입니다.

따라서 LSTM 텐서 같아야 (1000, 1, 10) 또는 (1000, 1, 100)

답변

0

입력 형식 (nb_samples, time_steps, input_dim)이다. 귀하의 경우, 샘플의 수는 문장의 수입니다. 시간 단계는 문장의 단어 수이므로 최대 단어가있는 문장의 단어 수입니다 (다른 문장은이 길이에 맞게 채워야합니다). input_dimension은 각 단어를 나타내는 데 사용되는 지형지 물의 수입니다. 예를 들어 word2vec embedding을 100 또는 200 차원으로 사용하면 input_dimension이됩니다.

1

첫 번째 질문에 대한 답을 모르겠습니다. Keras와 함께 일한 경험이 없습니다. 그러나 Tensorflow에서 일한 경험이 있습니다. 두 번째 질문에 대한

, 당신은 "LSTM 각 시간 단계에서 하나 개의 문장 읽기에 내가 원하는"을 의미했다. 당신의 의도가 문장 순서로 작업하는 것이라면, 나는 당신이 LSTM을 사용함에 따라 당신이 원하는 것을 믿는다. 그런 다음 순서 길이를 정의 할 필요가있다. 문장의 수는 특정 순서로 처리 될 것이다. 시퀀스 길이는 time_step을 사용하여 정의 할 수 있습니다. 따라서 time_step = 1로 설정하면 올바르지 않습니다. 문장 벡터로 작업하는 경우 마지막 문장은 문장 삽입을위한 벡터 차원입니다.

예를 들어 문서에 1000 개의 문장이있는 경우 각 문장은 크기가 100 인 벡터로 표시되며 시퀀스 길이는 5입니다 (하나의 시퀀스에서 최대 5 개의 문장을 처리하려는 경우). 그러면 텐서 치수는 (없음, 5,100)입니다. 첫 번째 것은 '없음'이므로 나중에 네트워크에 입력 할 시퀀스의 수를 결정할 수 있습니다 (미니 보트 학습).