使用神经网络预测常微分方程的初始条件给出的输出

2024-09-27 19:26:22 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我们有一个描述X如何影响Y的颂歌系统:

dXdt = -k * X

dYdt = Kin * (1 - (Vmax * X)/(Km + X)) - kout * Y

我试图用神经网络输入X(0)Y(0)t,然后输出Y(t)。我在TensorFlow中制作了一个前馈网络,并使用初始值X为5和10的Y数据,根据上述方程生成的数据对其进行训练。yi的初始值保持不变,使用它的稳态值(dYdt=0和X=0的值)。为了进行测试,我尝试了初始的X值,在我训练的两个值之间和之外。对于所有测试,Y(0)保持不变。你知道吗

中间值的测试结果很好,外部值的测试结果也很好。然而,这只是在网络训练的时间段内,比如t=[0,10]。一旦我试图预测一个超过这个时间段的值,预测就会开始偏离。你知道吗

有没有更好的方法来实现网络,以便我可以预测超过训练间隔的值?理想情况下,我希望能够预测,一旦X达到0,Y回到稳态。我一直在读关于使用RNN的书,但是我需要它在稀疏数据上进行训练,因为这些数据的时间点不是均匀分布的。我在上面使用的网络能够做到这一点,至少在训练的间歇期是这样的。而且,我看到的大多数RNN示例(不用于语言处理)都依赖于基于以前的时间点预测未来的时间点,而不是我尝试使用它的方式。你知道吗

我的一个想法是使用我原来的网络来预测经过训练的时间范围内的值(其中许多用于创建丰富的数据集),然后将其输入RNN来预测经过时间范围的值。这是一个可行的想法,还是有一些其他的方法,我可以尝试,将更好地工作。你知道吗


Tags: 数据方法网络系统时间时间段kinrnn

热门问题