2017-10-07 10 views
0

Keras를 처음 사용 했으므로 LSTM 레이어의 입력 데이터 모양을 이해하기가 어려웠습니다. Keras 설명서에 따르면 입력 데이터는 모양이 3D 텐서이어야한다고 나와 있습니다 (nb_samples, timesteps, input_dim). 이 형식을 이해하는 데 어려움이 있습니다. timesteps 변수는 네트워크가 기억하는 타임 스텝 수를 나타 냅니까?Keras에서 LSTM 입력을 설정하는 방법

내 데이터에 몇 가지 시간 단계가 네트워크 출력에 영향을 미치지 만 이전의 10 개 샘플이 출력에 영향을 준다는 것을 말할 수는 없습니다. 예를 들어, 입력은 문장을 구성하는 단어가 될 수 있습니다. 각 문장의 단어 사이에는 중요한 상관 관계가 있습니다. 나는 문장의 길이를 미리 알지 못한다.이 길이는 한 문장에서 다른 문장까지 다양하다. 문장이 끝나는 시점을 알 수 있습니다 (즉, 엔딩을 나타내는 마침표가 있음). 두 개의 다른 문장은 서로 영향을 미치지 않습니다. 이전 문장을 기억할 필요가 없습니다.

강화 학습에서 정책을 학습하기 위해 LSTM 네트워크를 사용하고 있으므로 고정 데이터 세트가 없습니다. 에이전트의 정책에 따라 문장의 길이가 변경됩니다.

데이터를 어떻게 형성해야합니까? Keras LSTM 레이어로 어떻게 공급되어야합니까?

+0

당신이 지출 할 얼마나 많은 자원에 따라, 다음, 문장의 최대 길이를 선택해야 절단/그 길이의 모든 예를 0으로 채우십시오. Keras는 그것을 고쳐야합니다. –

+0

입력 모양이이 경우에 있어야합니까? input_shape = (최대 _ 문장 길이,)? –

+0

텍스트를 문장으로 나눠야합니다. 문장의 양은'nb_samples'입니다. 'timesteps '는 단어/문자의 최대량입니다. 그런 다음 'input_dim'은 해당 단어/문자 표현의 크기입니다 (예 : 단어 포함, 포함 크기를 사용하는 경우) –

답변

1

시간 단계는 시퀀스의 총 길이입니다.

단어로 작업하는 경우 각 문장의 단어 양입니다.
문자로 작업하는 경우 각 시퀀스의 문자 수입니다. 변수 문장 길이 경우

, 당신은 None에 해당 차원을 설정해야합니다

keras의 변수 거리에서는 쉴드 작업의 두 가지 방법이 있습니다
#for functional API models: 
inputTensor = Input((None,input_dim)) #the nb_samples doesn't participate in this definition 

#for sequential models: 
LSTM(units, input_shape=(None,input_dim)) #the nb_samples doesn't participate in this definition 

.

    패딩
  • 고정 길이
  • 고정 길이의 경우 같은 길이

에 일괄 적으로 분리

  • 가변 길이, 당신은 의미가 더미 단어/문자를 작성하고 귀하의 문장을 채우기 최대 길이이므로 모든 문장의 길이는 동일합니다. 그런 다음 더미 단어/문자를 무시하는 Masking() 레이어를 추가합니다.

    Embedding 레이어는 이미 mask_zeros 매개 변수를 가지고 있습니다. 그런 다음 삽입으로 작업하는 경우 ID 0을 더미 문자/단어로 만들 수 있습니다.

    가변 길이에서 방금 여기처럼, 작은 배치에서 입력 데이터를 분리 : Keras misinterprets training data shape