나는 NN에 상당히 익숙하며, 대신 LSTM에 뭔가를 복사하는 "Hello World"를하고 있습니다. 다음과 같이 간단한 로직을 선택했습니다 :LSTM 트레이닝 패턴
3 타임 스텝이있는 입력. 첫 번째는 1 또는 0이고 다른 두 개는 임의의 숫자입니다. 예상 출력은 입력의 첫 번째 타임 스텝과 동일합니다. (?)이 간단한 논리가 100 %의 정확성을 위해 훈련 할 수
_X0=[1,5,9] _Y0=[1] _X1=[0,5,9] _Y1=[0] ... 200 more records like this.
: 데이터 피드는 것 같습니다. 나는 많은 테스트를했고, 가장 효율적인 모델은 3 개의 LSTM 레이어 였고, 각각 15 개의 숨겨진 유닛이있었습니다. 이것은 22 개의 신기원 이후에 100 %의 정확도를 보였다.
그러나 나는 이해하기 힘든 것을 알아 냈다 : 처음 12 개 에포크에서는 모델이 정확도 (0.5로 유지됨)와 범주 진상 증자 (0.69-0.65). 이후 신기원 12에서 신기원 22까지는 정확도 1.0까지 매우 빠르게 훈련합니다. 문제는 왜 이렇게 훈련이 일어나는 것입니까? 왜 처음 12 개 신기원이 진전을 보이지 않고 왜 12-22 신대륙이 훨씬 더 효율적인가? 그것은 여러 가지 요인에 따라 달라집니다로
from keras.models import Sequential
from keras.layers import Input, Dense, Dropout, LSTM
from keras.models import Model
import helper
from keras.utils.np_utils import to_categorical
x_,y_ = helper.rnn_csv_toXY("LSTM_hello.csv",3,"target")
y_binary = to_categorical(y_)
model = Sequential()
model.add(LSTM(15, input_shape=(3,1),return_sequences=True))
model.add(LSTM(15,return_sequences=True))
model.add(LSTM(15, return_sequences=False))
model.add(Dense(2, activation='softmax', kernel_initializer='RandomUniform'))
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['acc'])
model.fit(x_, y_binary, epochs=100)
사용중인 Keras 버전은 무엇입니까? 훈련 기록을 게시 할 수 있습니까? – nemo
Keras 2.0.3을 사용합니다. – Manngo