Я создаю модель Keras. Я пытаюсь вариации. Это моя первая модель:
es = EarlyStopping(monitor='val_loss')
model = Sequential()
model.add(LSTM(100,input_shape=(TIME_STEPS,11), dropout=0.0,
recurrent_dropout=0.0, kernel_initializer='random_uniform'
))
model.add(Dropout(0.25))
#######model.add(LSTM(64))
model.add(Dense(15, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='mean_squared_error', optimizer=kr.optimizers.rmsprop(0.01),
metrics=[tf.keras.metrics.BinaryAccuracy()])
csv_logger = kr.callbacks.CSVLogger('sonuclar.log')
history = model.fit(x_train, #train girdiler
y_train, #train çıktılar
epochs=150,
verbose=2,
batch_size=BATCH_SIZE,
shuffle=False,
validation_data=(x_test1,
y_test1),
callbacks=[EarlyStopping(monitor='val_loss', patience=21),
ModelCheckpoint(filepath='best_model.h5', monitor='val_loss', save_best_only=True)])
И эта модель имеет всего 1 слой Lstm и 2 плотных слоя. Вот мои результаты потерь:
.
.
.
Epoch 99/150
- 0s - loss: 8.0949e-04 - binary_accuracy: 4.9048e-04 - val_loss: 3.7912e-04 - val_binary_accuracy: 4.8986e-04
Epoch 100/150
- 0s - loss: 7.9101e-04 - binary_accuracy: 4.9053e-04 - val_loss: 9.9216e-05 - val_binary_accuracy: 4.8991e-04
Epoch 101/150
- 0s - loss: 6.8317e-04 - binary_accuracy: 4.9057e-04 - val_loss: 3.0611e-04 - val_binary_accuracy: 4.8996e-04
Epoch 102/150
- 0s - loss: 9.5524e-04 - binary_accuracy: 4.9061e-04 - val_loss: 7.6808e-05 - val_binary_accuracy: 4.9000e-04
Epoch 103/150
- 0s - loss: 6.7897e-04 - binary_accuracy: 4.9065e-04 - val_loss: 2.7978e-04 - val_binary_accuracy: 4.9005e-04
Epoch 104/150
- 0s - loss: 5.9103e-04 - binary_accuracy: 4.9069e-04 - val_loss: 6.1831e-04 - val_binary_accuracy: 4.9009e-04
Epoch 105/150
- 0s - loss: 8.2365e-04 - binary_accuracy: 4.9072e-04 - val_loss: 6.4325e-05 - val_binary_accuracy: 4.9014e-04
Epoch 106/150
- 0s - loss: 7.1716e-04 - binary_accuracy: 4.9076e-04 - val_loss: 1.0926e-04 - val_binary_accuracy: 4.9018e-04
Epoch 107/150
- 0s - loss: 6.5435e-04 - binary_accuracy: 4.9080e-04 - val_loss: 2.2587e-04 - val_binary_accuracy: 4.9022e-04
Epoch 108/150
- 0s - loss: 7.6734e-04 - binary_accuracy: 4.9083e-04 - val_loss: 7.6250e-05 - val_binary_accuracy: 4.9026e-04
Epoch 109/150
- 0s - loss: 6.4531e-04 - binary_accuracy: 4.9087e-04 - val_loss: 5.4440e-04 - val_binary_accuracy: 4.9030e-04
Epoch 110/150
- 0s - loss: 7.2096e-04 - binary_accuracy: 4.9091e-04 - val_loss: 8.7251e-05 - val_binary_accuracy: 4.9034e-04
Epoch 111/150
- 0s - loss: 7.3333e-04 - binary_accuracy: 4.9094e-04 - val_loss: 2.8440e-04 - val_binary_accuracy: 4.9038e-04
Epoch 112/150
Если я попытаюсь использовать второй слой Lstm, эта модель должна быть умнее предыдущей модели для прогнозирования цен на акции, но этот код:
es = EarlyStopping(monitor='val_loss')
model = Sequential()
model.add(LSTM(100,input_shape=(TIME_STEPS,11), dropout=0.0,
recurrent_dropout=0.0, kernel_initializer='random_uniform'
,return_sequences=True))
model.add(Dropout(0.25))
model.add(LSTM(64))
model.add(Dense(15, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='mean_squared_error', optimizer=kr.optimizers.rmsprop(0.01),
metrics=[tf.keras.metrics.BinaryAccuracy()])
csv_logger = kr.callbacks.CSVLogger('sonuclar.log')
history = model.fit(x_train, #train girdiler
y_train, #train çıktılar
epochs=150,
verbose=2,
batch_size=BATCH_SIZE,
shuffle=False,
validation_data=(x_test1,
y_test1),
callbacks=[EarlyStopping(monitor='val_loss', patience=21),
ModelCheckpoint(filepath='best_model.h5', monitor='val_loss', save_best_only=True)])
имеет плохой результат тренировки, чем у предыдущей модели. Это не может быть переобучением, потому что я не использую прогнозирование. Почему вторая модель хуже, чем первая модель. Последнее, мой набор данных имеет 15 функций цены акций, и я пытаюсь предсказать цены акций