NeuralODE.reference.ipynb#

[1]:
# %load_ext nb_black
# pip install neural-diffeqs

import neural_diffeqs

print(f"Version: {neural_diffeqs.__version__}")
import torch
Version: 0.3.2

Default NeuralODE#

The only required parameter is:

  • state_size

[2]:
ODE = neural_diffeqs.NeuralODE(state_size=50)
print(ODE)
NeuralODE(
  (mu): TorchNet(
    (hidden_1): Sequential(
      (linear): Linear(in_features=50, out_features=512, bias=True)
      (activation): LeakyReLU(negative_slope=0.01)
    )
    (hidden_2): Sequential(
      (linear): Linear(in_features=512, out_features=512, bias=True)
      (activation): LeakyReLU(negative_slope=0.01)
    )
    (output): Sequential(
      (linear): Linear(in_features=512, out_features=50, bias=True)
    )
  )
)

Changing some parameters#

For example, specify the hidden state size for each network

[3]:
ODE = neural_diffeqs.NeuralODE(state_size=50, mu_hidden=[64, 128, 64])
print(ODE)
NeuralODE(
  (mu): TorchNet(
    (hidden_1): Sequential(
      (linear): Linear(in_features=50, out_features=64, bias=True)
      (activation): LeakyReLU(negative_slope=0.01)
    )
    (hidden_2): Sequential(
      (linear): Linear(in_features=64, out_features=128, bias=True)
      (activation): LeakyReLU(negative_slope=0.01)
    )
    (hidden_3): Sequential(
      (linear): Linear(in_features=128, out_features=64, bias=True)
      (activation): LeakyReLU(negative_slope=0.01)
    )
    (output): Sequential(
      (linear): Linear(in_features=64, out_features=50, bias=True)
    )
  )
)

Activation functions, dropout, and bias#

[4]:
ODE = neural_diffeqs.NeuralODE(
    state_size=50,
    mu_hidden=[64, 128, 128, 64],
    mu_activation=[torch.nn.Softmax, torch.nn.Tanh],
    mu_dropout=[0, 0.2, 0],
)
print(ODE)
NeuralODE(
  (mu): TorchNet(
    (hidden_1): Sequential(
      (linear): Linear(in_features=50, out_features=64, bias=True)
      (activation): Softmax(dim=None)
    )
    (hidden_2): Sequential(
      (linear): Linear(in_features=64, out_features=128, bias=True)
      (dropout): Dropout(p=0.2, inplace=False)
      (activation): Tanh()
    )
    (hidden_3): Sequential(
      (linear): Linear(in_features=128, out_features=128, bias=True)
      (activation): Tanh()
    )
    (hidden_4): Sequential(
      (linear): Linear(in_features=128, out_features=64, bias=True)
      (activation): Tanh()
    )
    (output): Sequential(
      (linear): Linear(in_features=64, out_features=50, bias=True)
    )
  )
)