NeuralSDE.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 NeuralSDE#
The only required parameter is:
state_size
[9]:
SDE = neural_diffeqs.NeuralSDE(state_size=50)
print(SDE)
NeuralSDE(
(mu): TorchNet(
(hidden_1): Sequential(
(linear): Linear(in_features=50, out_features=2000, bias=True)
(dropout): Dropout(p=0.2, inplace=False)
(activation): LeakyReLU(negative_slope=0.01)
)
(hidden_2): Sequential(
(linear): Linear(in_features=2000, out_features=2000, bias=True)
(dropout): Dropout(p=0.2, inplace=False)
(activation): LeakyReLU(negative_slope=0.01)
)
(output): Sequential(
(linear): Linear(in_features=2000, out_features=50, bias=True)
)
)
(sigma): TorchNet(
(hidden_1): Sequential(
(linear): Linear(in_features=50, out_features=400, bias=True)
(dropout): Dropout(p=0.2, inplace=False)
(activation): LeakyReLU(negative_slope=0.01)
)
(hidden_2): Sequential(
(linear): Linear(in_features=400, out_features=400, bias=True)
(dropout): Dropout(p=0.2, inplace=False)
(activation): LeakyReLU(negative_slope=0.01)
)
(output): Sequential(
(linear): Linear(in_features=400, out_features=50, bias=True)
)
)
)
Changing some parameters#
For example, specify the hidden state size for each network
[13]:
SDE = neural_diffeqs.NeuralSDE(
state_size=50, mu_hidden=[512, 512], sigma_hidden=[32, 32]
)
print(SDE)
NeuralSDE(
(mu): TorchNet(
(hidden_1): Sequential(
(linear): Linear(in_features=50, out_features=512, bias=True)
(dropout): Dropout(p=0.2, inplace=False)
(activation): LeakyReLU(negative_slope=0.01)
)
(hidden_2): Sequential(
(linear): Linear(in_features=512, out_features=512, bias=True)
(dropout): Dropout(p=0.2, inplace=False)
(activation): LeakyReLU(negative_slope=0.01)
)
(output): Sequential(
(linear): Linear(in_features=512, out_features=50, bias=True)
)
)
(sigma): TorchNet(
(hidden_1): Sequential(
(linear): Linear(in_features=50, out_features=32, bias=True)
(dropout): Dropout(p=0.2, inplace=False)
(activation): LeakyReLU(negative_slope=0.01)
)
(hidden_2): Sequential(
(linear): Linear(in_features=32, out_features=32, bias=True)
(dropout): Dropout(p=0.2, inplace=False)
(activation): LeakyReLU(negative_slope=0.01)
)
(output): Sequential(
(linear): Linear(in_features=32, out_features=50, bias=True)
)
)
)
Activation functions, dropout, and bias#
[14]:
import torch
[19]:
SDE = neural_diffeqs.NeuralSDE(
state_size=50,
mu_hidden=[512, 512],
sigma_hidden=[32, 32],
mu_activation=[torch.nn.Softmax, torch.nn.Tanh],
sigma_activation=["Softmax", "Tanh"],
mu_dropout=0,
sigma_dropout=0,
)
print(SDE)
NeuralSDE(
(mu): TorchNet(
(hidden_1): Sequential(
(linear): Linear(in_features=50, out_features=512, bias=True)
(activation): Softmax(dim=None)
)
(hidden_2): Sequential(
(linear): Linear(in_features=512, out_features=512, bias=True)
(activation): Tanh()
)
(output): Sequential(
(linear): Linear(in_features=512, out_features=50, bias=True)
)
)
(sigma): TorchNet(
(hidden_1): Sequential(
(linear): Linear(in_features=50, out_features=32, bias=True)
(activation): Softmax(dim=None)
)
(hidden_2): Sequential(
(linear): Linear(in_features=32, out_features=32, bias=True)
(activation): Tanh()
)
(output): Sequential(
(linear): Linear(in_features=32, out_features=50, bias=True)
)
)
)
[21]:
SDE = neural_diffeqs.NeuralSDE(
state_size=50,
mu_hidden=[512, 512],
sigma_hidden=[32, 32],
mu_activation=torch.nn.Softmax,
sigma_activation=["Softmax", "Softmax"],
mu_dropout=0,
sigma_dropout=0,
)
print(SDE)
NeuralSDE(
(mu): TorchNet(
(hidden_1): Sequential(
(linear): Linear(in_features=50, out_features=512, bias=True)
(activation): Softmax(dim=None)
)
(hidden_2): Sequential(
(linear): Linear(in_features=512, out_features=512, bias=True)
(activation): Softmax(dim=None)
)
(output): Sequential(
(linear): Linear(in_features=512, out_features=50, bias=True)
)
)
(sigma): TorchNet(
(hidden_1): Sequential(
(linear): Linear(in_features=50, out_features=32, bias=True)
(activation): Softmax(dim=None)
)
(hidden_2): Sequential(
(linear): Linear(in_features=32, out_features=32, bias=True)
(activation): Softmax(dim=None)
)
(output): Sequential(
(linear): Linear(in_features=32, out_features=50, bias=True)
)
)
)
[23]:
SDE = neural_diffeqs.NeuralSDE(
state_size=50,
mu_hidden=[512, 512],
sigma_hidden=[32, 32],
mu_activation=torch.nn.Softmax,
sigma_activation=["Softmax", "Softmax"],
mu_dropout=[0.2, 0.1],
sigma_dropout=0.2,
)
print(SDE)
NeuralSDE(
(mu): TorchNet(
(hidden_1): Sequential(
(linear): Linear(in_features=50, out_features=512, bias=True)
(dropout): Dropout(p=0.2, inplace=False)
(activation): Softmax(dim=None)
)
(hidden_2): Sequential(
(linear): Linear(in_features=512, out_features=512, bias=True)
(dropout): Dropout(p=0.1, inplace=False)
(activation): Softmax(dim=None)
)
(output): Sequential(
(linear): Linear(in_features=512, out_features=50, bias=True)
)
)
(sigma): TorchNet(
(hidden_1): Sequential(
(linear): Linear(in_features=50, out_features=32, bias=True)
(dropout): Dropout(p=0.2, inplace=False)
(activation): Softmax(dim=None)
)
(hidden_2): Sequential(
(linear): Linear(in_features=32, out_features=32, bias=True)
(dropout): Dropout(p=0.2, inplace=False)
(activation): Softmax(dim=None)
)
(output): Sequential(
(linear): Linear(in_features=32, out_features=50, bias=True)
)
)
)
[25]:
SDE = neural_diffeqs.NeuralSDE(
state_size=50,
mu_hidden=[512, 512],
sigma_hidden=[32, 32],
mu_activation=torch.nn.Softmax,
sigma_activation=["Softmax", "Softmax"],
mu_dropout=[0.2, 0.1],
sigma_dropout=0.2,
mu_bias=[False, True],
)
print(SDE)
NeuralSDE(
(mu): TorchNet(
(hidden_1): Sequential(
(linear): Linear(in_features=50, out_features=512, bias=False)
(dropout): Dropout(p=0.2, inplace=False)
(activation): Softmax(dim=None)
)
(hidden_2): Sequential(
(linear): Linear(in_features=512, out_features=512, bias=True)
(dropout): Dropout(p=0.1, inplace=False)
(activation): Softmax(dim=None)
)
(output): Sequential(
(linear): Linear(in_features=512, out_features=50, bias=True)
)
)
(sigma): TorchNet(
(hidden_1): Sequential(
(linear): Linear(in_features=50, out_features=32, bias=True)
(dropout): Dropout(p=0.2, inplace=False)
(activation): Softmax(dim=None)
)
(hidden_2): Sequential(
(linear): Linear(in_features=32, out_features=32, bias=True)
(dropout): Dropout(p=0.2, inplace=False)
(activation): Softmax(dim=None)
)
(output): Sequential(
(linear): Linear(in_features=32, out_features=50, bias=True)
)
)
)
[27]:
SDE = neural_diffeqs.NeuralSDE(
state_size=50,
mu_hidden=[512, 512],
sigma_hidden=[32, 32],
mu_activation=torch.nn.Softmax,
sigma_activation=["Softmax", "Softmax"],
mu_dropout=[0.2, 0.1],
sigma_dropout=0.2,
mu_output_bias=False,
sigma_output_bias=False,
)
print(SDE)
NeuralSDE(
(mu): TorchNet(
(hidden_1): Sequential(
(linear): Linear(in_features=50, out_features=512, bias=True)
(dropout): Dropout(p=0.2, inplace=False)
(activation): Softmax(dim=None)
)
(hidden_2): Sequential(
(linear): Linear(in_features=512, out_features=512, bias=True)
(dropout): Dropout(p=0.1, inplace=False)
(activation): Softmax(dim=None)
)
(output): Sequential(
(linear): Linear(in_features=512, out_features=50, bias=False)
)
)
(sigma): TorchNet(
(hidden_1): Sequential(
(linear): Linear(in_features=50, out_features=32, bias=True)
(dropout): Dropout(p=0.2, inplace=False)
(activation): Softmax(dim=None)
)
(hidden_2): Sequential(
(linear): Linear(in_features=32, out_features=32, bias=True)
(dropout): Dropout(p=0.2, inplace=False)
(activation): Softmax(dim=None)
)
(output): Sequential(
(linear): Linear(in_features=32, out_features=50, bias=False)
)
)
)