무엇보다 이론적 인 질문이 많습니다. 마지막 레이어가 softmax이고 입력 레이어가 LSTM 인 바이너리 분류에서 거의 제로 크로스 엔트로피 손실이있는 경우 열차 세트의 정확도가 54 %를 넘는다는 것이 맞습니까? 나는 그것이 데이터를 초과 구현할 것이라고 추정했을 것입니다. 그런 낮은 손실이 있다면 고도의 정확성으로 극도로 과부하 기능을 갖게 될 것입니다.케라 (Kera) RNN에서 오류는 매우 낮지 만 정확도는 낮음
다른 학습 속도, 0.01, 0.001, 0.0001을 모두 똑같은 결과로 시도했습니다. 또한 첫 번째 LSTM 아래에 두 번째 LSTM 레이어를 추가하여 의도적으로 모델을 오버 파이팅하도록 모델 복잡성을 높이었지만 아무 것도하지 않았습니다.
내가 누락 된 이론적 개념은 무엇입니까?
model.add(LSTM(64, input_shape=(100000,26), return_sequences = True, activation = 'relu'))
model.add(Dropout(0.3))
model.add(LSTM(32, return_sequences = True, activation = 'relu'))
model.add(Dense(2))
model.add(Activation('softmax'))
opt1 = keras.optimizers.RMSprop(lr=0.01, rho=0.9, epsilon=1e-08, decay=0.0)
model.compile(loss='categorical_crossentropy', optimizer=opt1, metrics=['accuracy'])
filepath="model_check-{epoch:02d}-{loss:.4f}.hdf5"
checkpoint = ModelCheckpoint(filepath, monitor='loss', verbose=1,
save_best_only=True, mode='min')
callbacks_list = [checkpoint]
model.fit(df_matrix2, y_matrix2, epochs=5, batch_size=2, verbose=2)
처음부터 행렬을 설정합니다. 다른 것들을 먼저 테스트 할 때 약간의 오버랩이 있습니다.
df_matrix = df_model.as_matrix()
df_matrix = np.reshape(df_matrix,(-1,588425,26))
y_matrix = y.as_matrix()
y_matrix = np.reshape(y_matrix,(-1,588425,1))
df_matrix2 = df_matrix[:,0:100000,:]
df_matrix2 = np.reshape(df_matrix2, (-1,100000,26))
y_matrix2 = y_matrix[:,0:100000,:]
y_matrix2 = np.reshape(y_matrix2,(-1,100000,1))
y_matrix2 = keras.utils.np_utils.to_categorical(y_matrix2,2)
y_matrix2 = np.reshape(y_matrix2,(-1,100000,2))
이 주식 데이터이지만 그래서 나는 분류를 만들어 단지 0 또는 1이 60 분에서 높거나 낮은 여부에 따라. 그래서 우선 많은 무작위성이 있습니다. 나는 LSTM이 과장되어 높은 정확도를 얻을 것이라고 생각했습니다.
Epoch 1/5
194s - loss: 0.0571 - acc: 0.5436
Epoch 2/5
193s - loss: 1.1921e-07 - acc: 0.5440
Epoch 3/5
192s - loss: 1.1921e-07 - acc: 0.5440
Epoch 4/5
이는 저의 손실과 정확성입니다.
사실 내 데이터를 보았습니다. 0의 빈도가 0.54403이므로 매번 0을 예측할 수 있도록 훈련되었습니다. – a1letterword
문제를 발견했다고 생각합니다. 나는 거의 충분한 신기원을 위해 그것을 훈련하지 않고 있었다. 입력 크기를 1000 timesteps로 줄이고 2000 개 에포크를 실행했을 때 나는 90 % 이상의 정확도 점수를 얻었습니다. – a1letterword