После прочтения и поиска в Google я обеспокоен тем, что с моими данными что-то не так. Данные поступают из двух источников с интервалами почтения. Я объединил два источника и повторно отобрал данные, чтобы они имели одинаковые интервалы с линейной функцией. Чем я масштабировал данные, используя StandardScaler. Наконец, данные были разделены на небольшие фрагменты (60 строк или элементов - пробовали фрагменты разных размеров).
Одна вещь, которую я заметил, что после масштабирования некоторые особенности (столбцы) сильно меняются - вот пример данных:
Здесь одна особенность равна нулю. В других примерах это меняется.
Я попробовал несколько конфигураций:
model = Sequential()
model.add(LSTM(256, input_shape=(4,38)))
model.add(Dense(1, activation='sigmoid'))
model.summary()
adam = Adam(lr=0.001)
chk = ModelCheckpoint('best_model.pkl', monitor='val_acc', save_best_only=True, mode='max', verbose=1)
model.compile(loss='binary_crossentropy', optimizer=adam, metrics=['accuracy'])
model.fit(train, train_target, epochs=300, batch_size=128, callbacks=[chk], validation_data=(validation,validation_target), shuffle=True)
OR
model = keras.Sequential()
model.add(LSTM(32, return_sequences=True,init='normal', input_shape=(4, 46)))
model.add(LSTM(32, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(1, activation='sigmoid'))
opt = SGD(lr=0.00008)
model.compile(loss='mean_squared_error', optimizer=opt, metrics=['accuracy'])
model.fit(train, train_target, epochs=300, batch_size=128, callbacks=[chk], validation_data=(validation,validation_target), shuffle=True)
Независимо от того, сколько выборок - 1000, 2000, 5000 - Точность val всегда составляет около 0,5 или менее и фиксирована для большей части обучения:
333/333 [==============================] - 0s 485us/step - loss: 4.5135 - val_loss: 4.4903
333/333 [==============================] - 0s 492us/step - loss: 4.5135 - val_loss: 4.4903
333/333 [==============================] - 0s 481us/step - loss: 4.5135 - val_loss: 4.4903
333/333 [==============================] - 0s 471us/step - loss: 4.5135 - val_loss: 4.4903
333/333 [==============================] - 0s 467us/step - loss: 4.5135 - val_loss: 4.4903
333/333 [==============================] - 0s 517us/step - loss: 4.5135 - val_loss: 4.4903
333/333 [==============================] - 0s 478us/step - loss: 4.5135 - val_loss: 4.4903