先强调在定义神经网络时forward要添加t
def forward(self, t, x): # 把它当f(t, x)求解就得有t, 就算现在用不上, 在odeint里会用上
h = self.model(x)
return h
下面说明输出参数
output = odeint(model, init, t, method='euler')
# 经实验发现,input_dim和output_dim维度必须相等,要不然y1 = y0 + dy会报错,
# 这说明y0和dy维度不相等,这说明odeint把NN当成了一个函数,NN的输入输出是同维系统状态x(向量)
# odeint的输出终于搞明白了(t.size, batch_size, x_dim) (几个时间步, 批大小, 状态x的维度)
下面是整个实验的代码
from torchdi