5. Neural Network
5.1
conv1d
This module contains the code for the bayesian Conv1D.
5.1.1
Conv1D(input_channels, output_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, weights_distribution=None, bias_distribution=None)
This class is the bayesian implementation of the Conv1D class.
Definition of a Bayesian Convolution 2D layer.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
input_channels
|
int
|
Number of channels in the input image. |
required |
output_channels
|
int
|
Number of channels produced by the convolution. |
required |
kernel_size
|
int
|
Size of the convolving kernel. |
required |
stride
|
int
|
Stride of the convolution. Deafults to 1. |
1
|
padding
|
int
|
Padding added to all four sides of the input. Defaults to 0. |
0
|
dilation
|
int
|
Spacing between kernel elements. |
1
|
groups
|
int
|
Number of blocked connections from input channels to output channels. Defaults to 1. |
1
|
weights_distribution
|
Optional[GaussianDistribution]
|
The distribution for the weights. |
None
|
bias_distribution
|
Optional[GaussianDistribution]
|
The distribution for the bias. |
None
|
Source code in illia/nn/torch/conv1d.py
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
|
5.1.1.1
forward(inputs)
Performs a forward pass through the Bayesian Convolution 2D layer. If the layer is not frozen, it samples weights and bias from their respective distributions. If the layer is frozen and the weights or bias are not initialized, it also performs sampling.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
inputs
|
Tensor
|
Input tensor to the layer. Dimensions: [batch, input channels, input width, input height]. |
required |
Returns:
Type | Description |
---|---|
Tensor
|
Output tensor after passing through the layer. Dimensions: [batch, output channels, output width, output height]. |
Source code in illia/nn/torch/conv1d.py
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 |
|
5.1.1.2
freeze()
Freezes the current module and all submodules that are instances of BayesianModule. Sets the frozen state to True.
Source code in illia/nn/torch/conv1d.py
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
|
5.1.1.3
kl_cost()
Computes the Kullback-Leibler (KL) divergence cost for the layer's weights and bias.
Returns:
Type | Description |
---|---|
Tensor
|
Tuple containing KL divergence cost and total number of |
int
|
parameters. |
Source code in illia/nn/torch/conv1d.py
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
|
5.2
conv2d
This module contains the code for the bayesian Conv2D.
5.2.1
Conv2D(input_channels, output_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, weights_distribution=None, bias_distribution=None)
This class is the bayesian implementation of the Conv2D class.
Definition of a Bayesian Convolution 2D layer.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
kernel_size
|
Union[int, tuple[int, int]]
|
Size of the convolving kernel. |
required |
stride
|
Union[int, tuple[int, int]]
|
Stride of the convolution. Deafults to 1. |
1
|
padding
|
Union[int, tuple[int, int]]
|
Padding added to all four sides of the input. Defaults to 0. |
0
|
dilation
|
Union[int, tuple[int, int]]
|
Spacing between kernel elements. |
1
|
groups
|
int
|
Number of blocked connections from input channels to output channels. Defaults to 1. |
1
|
weights_distribution
|
Optional[GaussianDistribution]
|
The distribution for the weights. |
None
|
bias_distribution
|
Optional[GaussianDistribution]
|
The distribution for the bias. |
None
|
Source code in illia/nn/torch/conv2d.py
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
|
5.2.1.1
forward(inputs)
Performs a forward pass through the Bayesian Convolution 2D layer. If the layer is not frozen, it samples weights and bias from their respective distributions. If the layer is frozen and the weights or bias are not initialized, it also performs sampling.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
inputs
|
Tensor
|
Input tensor to the layer. Dimensions: [batch, input channels, input width, input height]. |
required |
Returns:
Type | Description |
---|---|
Tensor
|
Output tensor after passing through the layer. Dimensions: [batch, output channels, output width, output height]. |
Source code in illia/nn/torch/conv2d.py
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
|
5.2.1.2
freeze()
Freezes the current module and all submodules that are instances of BayesianModule. Sets the frozen state to True.
Source code in illia/nn/torch/conv2d.py
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
|
5.2.1.3
kl_cost()
Computes the Kullback-Leibler (KL) divergence cost for the layer's weights and bias.
Returns:
Type | Description |
---|---|
Tensor
|
Tuple containing KL divergence cost and total number of |
int
|
parameters. |
Source code in illia/nn/torch/conv2d.py
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
|
5.3
embedding
This module contains the code for bayesian Embedding layer.
5.3.1
Embedding(num_embeddings, embeddings_dim, padding_idx=None, max_norm=None, norm_type=2.0, scale_grad_by_freq=False, sparse=False, weights_distribution=None)
This class is the bayesian implementation of the Embedding class.
This method is the constructor of the embedding class.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
num_embeddings
|
int
|
size of the dictionary of embeddings. |
required |
embeddings_dim
|
int
|
the size of each embedding vector. |
required |
padding_idx
|
Optional[int]
|
If specified, the entries at padding_idx do not contribute to the gradient. |
None
|
max_norm
|
Optional[float]
|
If given, each embedding vector with norm larger than max_norm is renormalized to have norm max_norm. |
None
|
norm_type
|
float
|
The p of the p-norm to compute for the max_norm option. |
2.0
|
scale_grad_by_freq
|
bool
|
If given, this will scale gradients by the inverse of frequency of the words in the mini-batch. |
False
|
sparse
|
bool
|
If True, gradient w.r.t. weight matrix will be a sparse tensor. |
False
|
weights_distribution
|
Optional[GaussianDistribution]
|
distribution for the weights of the layer. |
None
|
Source code in illia/nn/torch/embedding.py
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
|
5.3.1.1
forward(inputs)
This method is the forward pass of the layer.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
inputs
|
Tensor
|
input tensor. Dimensions: [*]. |
required |
Raises:
Type | Description |
---|---|
ValueError
|
Module has been frozen with undefined weights. |
Returns:
Type | Description |
---|---|
Tensor
|
outputs tensor. Dimension: [*, embedding dim]. |
Source code in illia/nn/torch/embedding.py
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
|
5.3.1.2
freeze()
Freezes the current module and all submodules that are instances of BayesianModule. Sets the frozen state to True.
Source code in illia/nn/torch/embedding.py
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
|
5.3.1.3
kl_cost()
Computes the Kullback-Leibler (KL) divergence cost for the layer's weights and bias.
Returns:
Type | Description |
---|---|
Tensor
|
Tuple containing KL divergence cost and total number of |
int
|
parameters. |
Source code in illia/nn/torch/embedding.py
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
|
5.4
linear
This module contains the code for Linear Bayesian layer.
5.4.1
Linear(input_size, output_size, weights_distribution=None, bias_distribution=None)
This class is the bayesian implementation of the torch Linear layer.
This is the constructor of the Linear class.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
input_size
|
int
|
Input size of the linear layer. |
required |
output_size
|
int
|
Output size of the linear layer. |
required |
weights_distribution
|
Optional[GaussianDistribution]
|
GaussianDistribution for the weights of the layer. Defaults to None. |
None
|
bias_distribution
|
Optional[GaussianDistribution]
|
GaussianDistribution for the bias of the layer. Defaults to None. |
None
|
Source code in illia/nn/torch/linear.py
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
|
5.4.1.1
forward(inputs)
This method is the forward pass of the layer.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
inputs
|
Tensor
|
input tensor. Dimensions: [batch, *]. |
required |
Raises:
Type | Description |
---|---|
ValueError
|
Module has been frozen with undefined weights. |
Returns:
Type | Description |
---|---|
Tensor
|
outputs tensor. Dimensions: [batch, *]. |
Source code in illia/nn/torch/linear.py
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
|
5.4.1.2
freeze()
Freezes the current module and all submodules that are instances of BayesianModule. Sets the frozen state to True.
Source code in illia/nn/torch/linear.py
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
|
5.4.1.3
kl_cost()
Computes the Kullback-Leibler (KL) divergence cost for the layer's weights and bias.
Returns:
Type | Description |
---|---|
Tensor
|
Tuple containing KL divergence cost and total number of |
int
|
parameters. |
Source code in illia/nn/torch/linear.py
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
|