我有一些与生物反应器相关的时间序列数据。每24小时我给生物反应器喂食葡萄糖,并测量它自上一次喂食以来产生了多少物质。
输入:葡萄糖饲料。
Ouput:物质的生产。
目的:考虑到我摄入的葡萄糖,估计这些物质的浓度随时间的推移。
该生物反应器具有一定的初始条件,如葡萄糖初始浓度和物质。每个实验都有不同的初始条件。在一个实验中,我可以从10毫米的物质开始,在另一个实验中,我可以从100毫米开始,所以知道起点是很重要的。
我想利用这个初始条件来训练RNN的初始隐藏状态。

有我能做到的吗?如果没有,是否有其他方法向RNN表示初始条件?我在Keras中使用python。谢谢!
在代码中,我相信它应该是这样的:
from tensorflow.keras.layers import Input, Dense, LSTM
from tensorflow.keras.models import Model
from tensorflow.keras.optimizers import Adam
input_layer = Input(shape=(16,3))
hidden_state_dim = 7
mlp_inp = Input(batch_shape=(hidden_state_dim,1))
mlp_dense_h = Dense(hidden_state_dim, activation='relu')(mlp_inp)
mlp_dense_c = Dense(hidden_state_dim, activation='relu')(mlp_inp)
x = LSTM(7, return_sequences = True)(input_layer, initial_state=[mlp_dense_h, mlp_dense_c])
model = Model(input_layer, x)但是我收到了ValueError:图断开。可能是因为没有向mlp_稠密_h/c的反向传播。
发布于 2021-01-06 21:17:58
接收错误的原因是没有将mlp_inp作为“模型”中的输入之一进行合并。以下修改后的代码可以正常工作:
from tensorflow.keras.layers import Input, Dense, LSTM
from tensorflow.keras.models import Model
from tensorflow.keras.optimizers import Adam
from keras.utils import plot_model
input_layer = Input(shape=(16,3))
hidden_state_dim = 7
mlp_inp = Input(batch_shape=(hidden_state_dim,1))
mlp_dense_h = Dense(hidden_state_dim, activation='relu')(mlp_inp)
mlp_dense_c = Dense(hidden_state_dim, activation='relu')(mlp_inp)
x = LSTM(7, return_sequences = True)(input_layer, initial_state=[mlp_dense_h, mlp_dense_c])
model = Model(inputs=[input_layer, mlp_inp], outputs=x) # Here is the change
plot_model(model, to_file='IC.png')我现在和你一样正在处理类似的RNN问题。也许我们可以更多地讨论这个感兴趣的问题。
发布于 2019-12-20 10:55:28
Initial_state参数在RNN的情况下,不是您在问题中所处的初始状态。您的初始状态非常特定于域。在RNN的情况下,初始状态是模型隐藏状态的初始值。如果要在深度学习模型中映射域的初始状态,则需要找到初始条件与输出之间的相关性,以及时间序列数据变化与输出之间的相关性。
我建议你试试以下步骤-
您可能需要调整模型以提高精度,例如增加自动编码器中间层的大小、在任何一个或两个模型中添加/删除层、添加正则化等。
如果你遇到任何问题请告诉我。
https://stackoverflow.com/questions/59402595
复制相似问题