gpt4 book ai didi

python - 具有初始状态的用于每日天气预报的 LSTM 网络

转载 作者:太空宇宙 更新时间:2023-11-04 02:02:32 26 4
gpt4 key购买 nike

为了预测两个天气值,我有一个数据集,其中包含一年的数据,分辨率为 15 分钟。因此每天 96 个时间点的数据和总共 365 * 96 个数据是可用的。

每当我在LSTM网络中输入一天的数据进行训练时,我也想为输出状态h给出真实的实测数据。

# tensor for setting output state h
init_state = tf.reshape(init_state, [1, 2])
init_state = tf.nn.rnn_cell.LSTMStateTuple(tf.constant([[0, 0]], tf.float32), init_state)

# tensor placeholder for input data with 2 inputs
train_placeholder = tf.placeholder(tf.float32, [1, 96, 2])

# hidden size equals 2, because LSTM output and output state h have 2 values
cell = tf.contrib.rnn.LSTMCell(2)
rnn_outputs_ts, state = tf.nn.dynamic_rnn(cell, train_placeholder,
dtype=tf.float32, initial_state=init_state)

训练每天循环进行:

# daily training of the weather data
for step in len(train_data):
sess.run(train_lstm, {train_placeholder: train_data[step].reshape(1, 96, 2),
init_state: init_data[step].reshape(1, 2) })

如果我按照描述在每次迭代中设置输出状态 h,与输出状态 h 默认始终设置为零相比,我会得到更好的结果。

由于输出状态 h 包含我输入实际测量值的两个值,因此 LSTM 单元的隐藏大小也限制为 2。但是,在不手动设置输出状态 h 的情况下,我注意到如果 LSTM 单元的隐藏大小大于 2 并且输出变平为 2,则可能会获得更好的结果。 MultiRNNCell 也是如此,由于输出状态 h,我也不使用它。

一方面我想要一个更大的 LSTM 网络,但另一方面我也想用真实的测量数据设置输出状态 h

你会如何处理我的情况?

最佳答案

我认为您需要另一个层 - 网络通常有一个输入层、一些中间层和一个进行最终分类的输出层。在您的情况下,您可以在 LSTM 层之后添加一个带有 2 个神经元的 Dense() 层。

此外,LSTMCell 已弃用 (https://www.tensorflow.org/api_docs/python/tf/nn/rnn_cell/LSTMCell),并将在 tensorflow 2.0 中删除。我建议使用 Keras(tensorflow 的包装器)来设置你的网络——它提供了许多便利的功能并有助于分析你的模型。在此处查看有关如何设置 LSTM 模型的说明:https://adventuresinmachinelearning.com/keras-lstm-tutorial/

关于python - 具有初始状态的用于每日天气预报的 LSTM 网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55436488/

26 4 0
文章推荐: c++ - 英特尔 C++ 优化器删除了 masm 代码
文章推荐: node.js - Chrome 中的 Sequelize 查询和 PUT 错误问题
文章推荐: c - 使用 c 在文本文件中切换项目
文章推荐: javascript - 当用户向下滚动时,我在 <header> 下方的
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com