Solved a stiff diff equation using the chainer python module. Taken from wikipedia. The way I did it was to iterate with rng() random as the input with a while loop. That is. Iterate until the model(rng()) outputs the correct number.

Some problems were that dt could not be too small or it would get zero for update(). So I put it at 0.01 which I think is pretty high.

The loop for the initial model outputs.

y0 = model0(rng()) # previous value, y0

y1 = model1(rng()) # next value, y1

yp = (y1-y0)/dt # derivate

loss_eq = F.mean_squared_error(yp,-15*y0) # first error loss equation

loss_initial = F.mean_squared_error(init,y0) # inital error loss

loss = loss_eq + loss_initial

model0.cleargrads()

model1.cleargrads()

loss.backward()

optimizer0.update() # update each model0, model1

optimizer1.update()

source: diff eq y0 = model(rng),y1 = model(rng),dt = model(rng)(1)

dt could not be a model since it was so picky. Had to set it dt = 0.01