layer.LinearLayer
Parameters
-
input_dim(int):
The dimensionality of the input to the layer. -
output_dim(int):
The dimensionality of the output from the layer. weight(str, default:"uniform"):
Initialization method for the weight matrix.- Options:
"uniform": Random values uniformly distributed."normal": Random values normally distributed."zero": All values initialized to zero.- Custom: A predefined
numpy.ndarraycan also be passed.
- Options:
bias(str, default:"uniform"):
Initialization method for the bias vector.- Options:
"uniform": Random values uniformly distributed."normal": Random values normally distributed."zero": All values initialized to zero.- Custom: A predefined
numpy.ndarraycan also be passed.
- Options:
-
ei_mask(torch.Tensor, optional, default:None):
A mask for enforcing Dale’s law. Positive values enforce excitatory constraints, while negative values enforce inhibitory constraints. -
sparsity_mask(torch.Tensor, optional, default:None):
A mask defining sparse connectivity in the weight matrix. Values >0 indicate active connections. plasticity_mask(torch.Tensor, optional, default:None):
A mask controlling plasticity in the network. Each value corresponds to the scale of plasticity applied during gradient updates.
Methods
from_dict(cls, layer_struct)
Creates a LinearLayer instance from a dictionary of parameters.
Parameters:
layer_struct(dict):
A dictionary containing the following keys:"input_dim"(required)"output_dim"(required)"weight"(optional)"bias"(optional)"ei_mask"(optional)"sparsity_mask"(optional)"plasticity_mask"(optional)
Usage:
layer = LinearLayer.from_dict(layer_struct)
auto_rescale(param_type)
Rescales the weights or biases, particularly useful for sparse layers.
Parameters:
param_type(str):
Specifies which parameter to rescale.- Options:
"weight"or"bias"
- Options:
Usage:
layer.auto_rescale("weight")
to(device)
Moves the layer to a specified device (CPU or GPU).
Parameters:
device(torch.device):
Target device (e.g.,torch.device("cuda")or"cpu").
Usage:
layer.to(torch.device("cuda"))
forward(x)
Performs a forward pass through the layer.
Parameters:
x(torch.Tensor):
Input tensor of shape(batch_size, input_dim).
Returns:
A tensor of shape (batch_size, output_dim).
Usage:
output = layer.forward(input_tensor)
apply_plasticity()
Applies the plasticity mask to the gradient of the weight matrix during training.
Usage:
layer.apply_plasticity()
freeze()
Freezes the layer by disabling gradient updates for both weights and biases.
Usage:
layer.freeze()
unfreeze()
Unfreezes the layer, allowing gradient updates for weights and biases.
Usage:
layer.unfreeze()
enforce_constraints()
Enforces the specified constraints, such as sparsity and Dale’s law.
Usage:
layer.enforce_constraints()
set_weight(weight)
Sets the weight matrix for the layer.
Parameters:
weight(torch.Tensor):
A tensor with the same shape as the layer’s weight matrix.
Usage:
layer.set_weight(new_weight_tensor)
plot_layer(plot_type="weight")
Plots the layer’s weight matrix or its distribution.
Parameters:
plot_type(str, default:"weight"):
Type of plot.- Options:
"weight": Plots the weight matrix."dist": Plots the weight distribution.
- Options:
Usage:
layer.plot_layer("dist")
get_specs()
Retrieves the specifications and statistics of the layer.
Returns:
A dictionary containing:
"input_dim","output_dim","weight_learnable","bias_learnable", min/max values for weights and biases, and sparsity information.
Usage:
specs = layer.get_specs()