activations
allennlp.nn.activations
An Activation
is just a function
that takes some parameters and returns an element-wise activation function.
For the most part we just use
PyTorch activations.
Here we provide a thin wrapper to allow registering them and instantiating them from_params
.
The available activation functions are
- "linear"
- "mish"
- "swish"
- "relu"
- "relu6"
- "elu"
- "prelu"
- "leaky_relu"
- "threshold"
- "hardtanh"
- "sigmoid"
- "tanh"
- "log_sigmoid"
- "softplus"
- "softshrink"
- "softsign"
- "tanhshrink"
- "selu"
Activation#
class Activation(torch.nn.Module, Registrable)
Pytorch has a number of built-in activation functions. We group those here under a common
type, just to make it easier to configure and instantiate them from_params
using
Registrable
.
Note that we're only including element-wise activation functions in this list. You really need to think about masking when you do a softmax or other similar activation function, so it requires a different API.
__call__#
class Activation(torch.nn.Module, Registrable):
| ...
| def __call__(self, tensor: torch.Tensor) -> torch.Tensor
This function is here just to make mypy happy. We expect activation functions to follow
this API; the builtin pytorch activation functions follow this just fine, even though they
don't subclass Activation
. We're just making it explicit here, so mypy knows that
activations are callable like this.
Registrable._registry[Activation]#
Registrable._registry[Activation] = {
"linear": (lambda: _ActivationLambda(lambda x: x, "Linear"), None), # type: ignore
"mish" ...