【发布时间】:2019-08-21 12:28:17
【问题描述】:
对于两个天气值的预测,我有一个数据集,其中包含一年的数据,分辨率为 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。
您将如何处理我的情况?
【问题讨论】:
标签: python tensorflow machine-learning lstm