입력 형태는 형태 (samples, timeSteps, features)
에 감사드립니다.
유일한 기능은 "높이"이므로 features = 1
입니다.
길이가 다른 시퀀스를 입력하기 때문에 timeSteps = None
을 사용할 수 있습니다.
따라서 input_shape
은 (None, 1)
일 수 있습니다.
아래에서 stateful=True
레이어를 사용할 예정이므로 batch_input_shape=(1,None,1)
을 사용할 수 있습니다. 원하는 "샘플"의 양을 선택하십시오.
모델에서 실제로 궤적을 예측할 수 있지만 두 개 이상의 레이어가 필요할 수도 있습니다. (얼마나 많은 레이어와 셀이 LSTM 내부의 일치 방식을 알고 있는지에 대한 정확한 대답).
교육 :
지금, 먼저 (만 그때는 좋은 일들을 예측 시작할 수 있습니다) 네트워크를 훈련해야합니다.
훈련의 경우 올바른 순서로 true 값인 [h1,h2,h3,h4,h5,h6...]
의 시퀀스가 있다고 가정합니다. (나는 당신이 실제로 많은 시퀀스 (샘플)을 가지고 있으므로 모델이 더 잘 배울 것이라고 제안한다). 이 순서
, 당신은 다음 단계를 예측 출력이, 다음 목표는 그래서
[h2,h3,h4,h5,h6,h7...]
될 싶어, 당신이 모양 (manySequences, steps, 1)
와 data
배열을 가정, 당신은 만들 : 이제
x_train = data[:,:-1,:]
y_train = data[:,1:,:]
레이어에 return_sequences=True
을 사용해야합니다. (모든 입력 단계는 출력 단계를 생성합니다). 그리고이 데이터로 모델을 훈련시킵니다.
stateful=True
또는 stateful=False
중 어느 것을 사용하든 관계 없습니다.
예측 (, 당신은 항상 매 시대 시퀀스 전에 model.reset_state()
필요 true의 경우는하지만) : 예측
, 당신은 모델에 stateful=True
을 사용할 수 있습니다. 즉, h1
을 입력하면 h2
가 생성됩니다. 그리고 h2
을 입력하면 올바른 "h3
"을 예측하기 위해 "현재 속도"(모델의 state
)가 기억됩니다.
(트레이닝 단계에서는 전체 시퀀스를 한 번에 입력하기 때문에 트레이닝 단계에서는 중요하지 않습니다. 따라서 긴 시퀀스의 단계 사이에서 속도를 이해할 수 있습니다).
reset_states()
은 set_current_speed_to(0)
으로 지정할 수 있습니다. 입력하려는 단계가 시퀀스의 첫 번째 단계 일 때마다이 매개 변수를 사용합니다.
그럼 당신은 이런 식으로 루프를 수행 할 수 있습니다
model.reset_states() #make speed = 0
nextH = someValueWithShape((1,1,1))
predictions = [nextH]
for i in range(steps):
nextH = model.predict(nextH)
predictions.append(nextH)
가 an example here이지만,이 개 기능을 사용. 두 모델을 훈련 용으로 사용하고 예측 용으로 하나씩 사용하는 차이점이 있습니다. 그러나 return_sequences=True
및 stateful=True
(훈련 기간마다 초 단위로 reset_states()
을 잊지 마십시오) 중 하나만 사용할 수 있습니다.