L1 (absolute error) loss¤
L1 (absolute error) loss.
L1AbsoluteLoss
¤
Bases: Metric
L1 (absolute error) loss.
L1 loss penalty is the absolute sum of the learned activations, averaged over the number of activation vectors.
Example
l1_loss = L1AbsoluteLoss() learned_activations = torch.tensor([ ... [ # Batch 1 ... [1., 0., 1.] # Component 1: learned features (L1 of 2) ... ], ... [ # Batch 2 ... [0., 1., 0.] # Component 1: learned features (L1 of 1) ... ] ... ]) l1_loss.forward(learned_activations=learned_activations) tensor(1.5000)
Source code in sparse_autoencoder/metrics/loss/l1_absolute_loss.py
13 14 15 16 17 18 19 20 21 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 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 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 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
|
keep_batch_dim: bool = keep_batch_dim
instance-attribute
property
writable
¤
Whether to keep the batch dimension in the loss output.
__init__(num_components=1, *, keep_batch_dim=False)
¤
Initialize the metric.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
num_components |
PositiveInt
|
Number of components. |
1
|
keep_batch_dim |
bool
|
Whether to keep the batch dimension in the loss output. |
False
|
Source code in sparse_autoencoder/metrics/loss/l1_absolute_loss.py
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
|
calculate_abs_sum(learned_activations)
staticmethod
¤
Calculate the absolute sum of the learned activations.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
learned_activations |
Float[Tensor, names(BATCH, COMPONENT_OPTIONAL, LEARNT_FEATURE)]
|
Learned activations (intermediate activations in the autoencoder). |
required |
Returns:
Type | Description |
---|---|
Float[Tensor, names(BATCH, COMPONENT_OPTIONAL)]
|
Absolute sum of the learned activations (keeping the batch and component axis). |
Source code in sparse_autoencoder/metrics/loss/l1_absolute_loss.py
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
|
compute()
¤
Compute the metric.
Source code in sparse_autoencoder/metrics/loss/l1_absolute_loss.py
147 148 149 150 151 152 153 |
|
update(learned_activations, **kwargs)
¤
Update the metric state.
If we're keeping the batch dimension, we simply take the absolute sum of the activations (over the features dimension) and then append this tensor to a list. Then during compute we just concatenate and return this list. This is useful for e.g. getting L1 loss by batch item when resampling neurons (see the neuron resampler for details).
By contrast if we're averaging over the batch dimension, we sum the activations over the batch dimension during update (on each process), and then divide by the number of activation vectors on compute to get the mean.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
learned_activations |
Float[Tensor, names(BATCH, COMPONENT_OPTIONAL, LEARNT_FEATURE)]
|
Learned activations (intermediate activations in the autoencoder). |
required |
**kwargs |
Any
|
Ignored keyword arguments (to allow use with other metrics in a collection). |
{}
|
Source code in sparse_autoencoder/metrics/loss/l1_absolute_loss.py
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 142 143 144 145 |
|