Activation

Activation#

[1]:
from chemprop.nn.utils import Activation

Activation functions#

The following activation functions can be specified by name (e.g., activation = "relu"):

[2]:
for activation in Activation:
    print(activation)
relu
leakyrelu
prelu
tanh
elu
[3]:
from chemprop.nn import AtomMessagePassing

mp = AtomMessagePassing(activation="relu")

mp
[3]:
AtomMessagePassing(
  (W_i): Linear(in_features=72, out_features=300, bias=False)
  (W_h): Linear(in_features=314, out_features=300, bias=False)
  (W_o): Linear(in_features=372, out_features=300, bias=True)
  (dropout): Dropout(p=0.0, inplace=False)
  (tau): ReLU()
  (V_d_transform): Identity()
  (graph_transform): Identity()
)

Custom#

Custom activation functions can be used by passing a PyTorch module to the MessagePassing or Predictor constructor.

See Non-linear Activations (weighted sum, nonlinearity) and Non-linear Activations (other) for common PyTorch activation functions.

[4]:
import torch

mp = AtomMessagePassing(activation=torch.nn.Softplus())

mp
[4]:
AtomMessagePassing(
  (W_i): Linear(in_features=72, out_features=300, bias=False)
  (W_h): Linear(in_features=314, out_features=300, bias=False)
  (W_o): Linear(in_features=372, out_features=300, bias=True)
  (dropout): Dropout(p=0.0, inplace=False)
  (tau): Softplus(beta=1.0, threshold=20.0)
  (V_d_transform): Identity()
  (graph_transform): Identity()
)