python - LSTM val_loss 没有从 inf 改进
问题描述
我正在尝试教一个模型来预测股票价格,由于一个热编码,我的数据框有很多列,这是我的模型代码。
seq_len = 128
opt = keras.optimizers.Adam(learning_rate=0.001)
def create_model():
in_seq = Input(shape = (seq_len, 143))
x = Bidirectional(LSTM(128, return_sequences=True))(in_seq)
x = Bidirectional(LSTM(128, return_sequences=True))(x)
x = Bidirectional(LSTM(64, return_sequences=True))(x)
avg_pool = GlobalAveragePooling1D()(x)
max_pool = GlobalMaxPooling1D()(x)
conc = concatenate([avg_pool, max_pool])
conc = Dense(64, activation="relu")(conc)
out = Dense(1, activation="linear")(conc)
model = Model(inputs=in_seq, outputs=out)
model.compile(loss="mse", optimizer= opt, metrics=['mae', 'mape'])
return model
model = create_model()
#model.summary()
#callback = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=2)
callback = tf.keras.callbacks.ModelCheckpoint('Bi-LSTM.hdf5', monitor='val_loss', save_best_only=True, verbose=1)
model.fit(X_train, y_train,
batch_size=2048,
verbose=2,
callbacks=[callback],
epochs=200,
#shuffle=True,
validation_data=(X_val, y_val),)
model = tf.keras.models.load_model('/content/Bi-LSTM.hdf5')
###############################################################################
'''Calculate predictions and metrics'''
#Calculate predication for training, validation and test data
train_pred = model.predict(X_train)
val_pred = model.predict(X_val)
test_pred = model.predict(X_test)
#Print evaluation metrics for all datasets
train_eval = model.evaluate(X_train, y_train, verbose=0)
val_eval = model.evaluate(X_val, y_val, verbose=0)
test_eval = model.evaluate(X_test, y_test, verbose=0)
print(' ')
print('Evaluation metrics')
print('Training Data - Loss: {:.4f}, MAE: {:.4f}, MAPE: {:.4f}'.format(train_eval[0], train_eval[1], train_eval[2]))
print('Validation Data - Loss: {:.4f}, MAE: {:.4f}, MAPE: {:.4f}'.format(val_eval[0], val_eval[1], val_eval[2]))
print('Test Data - Loss: {:.4f}, MAE: {:.4f}, MAPE: {:.4f}'.format(test_eval[0], test_eval[1], test_eval[2]))
但在训练期间,结果是
Epoch 000xx: val_loss did not improve from inf
Epoch x/xxx
x/x - 19s - loss: nan - mae: nan - mape: nan - val_loss: nan - val_mae: nan - val_mape: nan
所以我的问题是,
- 让模型训练更长的时间会改善结果吗?
- 我可以修复这个模型还是必须更改为另一个模型?
请让我知道我错在哪里。
解决方案
推荐阅读
- reactjs - Material UI makeStyles 在我导入时破坏了我的组件样式
- java - 为什么我的 BST 的平均身高这么高?
- amazon-web-services - 将 Blob Drive 文件上传到 Amazon AWS S3 存储桶
- android - Redmi 上的 Intent ACTION_FINGERPRINT_ENROLL 导致异常
- c# - 绑定使用“新”文本属性的自定义 TextBlock 的文本属性
- go - 为什么 Go 使用通道在 goroutine 之间发送和接收数据,而不是使用普通变量?
- reactjs - 当我使用 Hooks 在 React 中单击 h3 标签时如何循环组件
- python - Python Django 拒绝创建用户并告诉我下载 Pillow(再次)
- openlayers - 修改qgis2web中的一个测量工具-openlayers导出-添加面积功能
- json - Flutter - 使用父集解析 Json