python - 循环不同的数据集并使用 LSTM 进行预测
问题描述
我一直在研究 keras,LSTM 一段时间,但仍然相当新。
我面临一个问题,每次使用 keras LSTM 进行训练和预测时,我都需要重新启动 Jupyter Notebook。
当我需要使用相同的 LSTM 模型设置循环使用不同数据集的多个预测时,这会出现问题。
另一种方法是按数据集训练和预测数据集,每次预测完成后重新启动和运行,这将是一个非常繁琐的过程。
例如:
for i in ...: # Loop for different data set
...
# Create LSTM Model
model = Sequential()
model.add(LSTM(units=32,
activation='relu',
batch_input_shape=(1, timestep_n, feature_n),
return_sequences=True))
model.add(Dense(units=1,
activation='relu'))
model.compile(loss='mean_squared_error', optimizer=adam, metrics=['accuracy'])
...
# Train Model
model.fit(x, y, epochs=100)
...
# Predict
result = model.predict(x_p)
# End Loop for next data set
在创建每个训练模型之前,我尝试清除会话,但预测的值与我运行单个训练和预测时的值不同。
session = tf.get_default_session()
if session is not None:
session.close()
K.clear_session()
gc.collect()
我还使用了随机种子,希望每次运行都能获得相同的值。为了一致性。
SEED = 1
np.random.seed(SEED)
tf.set_random_seed(SEED)
random.seed(SEED)
我正在考虑在每个循环中声明/创建一个“新”LSTM 模型来预测不同数据集的值,而不必手动重新启动笔记本并为每个数据集运行。
即使我del model
在循环结束时执行,内存也没有被正确清除。
有人可以帮忙吗?
解决方案
你得到了什么:
for i in ...: # Loop for different data set
...
model = None
# Create LSTM Model
model = Sequential()
...
推荐阅读
- javascript - 为什么 ReactJS npm 需要这么长时间才能安装在我的机器上
- javascript - Console.log 显示在函数的末尾
- c++ - STL 中的容量和复制
- selenium - 找到颜色的 xpath
- node.js - events.js:180 抛出 er;// 未处理的“错误”事件 ^
- python - 一系列列数据的散点图
- php - 如何防止用户直接从 url 访问文件?
- php - Laravel 5.8 - 每个 IP 的速率限制
- node.js - .where() firestore 查询无法正常工作?
- java - 如何编写仅在字符串包含某些字符和数字时才激活的正则表达式?