selector¶
MRFI selector methods
A selector is a call back function with fixed argument shape,
and other optional args specified in config file.
The selector determines which positions of tensor are send to fault injector i.e. error_mode.
Selector returns a 1-d index tensor with type torch.long,
indicates the index of target tensor after flatten.
Note
If no selector specified in config file, all target tensor will be sent to fault injector.
EmptySelector(shape)
¶
No position selected by this, for debug or special use.
FixPosition(shape, position)
¶
Select fixed one position by coordinate.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
position |
Union[int, List[int]]
|
if if |
required |
FixPositions(shape, positions)
¶
Select a list of fixed positions by coordinate.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
positions |
Union[List[int], List[List[int]]]
|
if if |
required |
RandomPositionByNumber(shape, n=1, per_instance=False)
¶
Select n random positions.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n |
int
|
Number of target positions. |
1
|
per_instance |
bool
|
if |
False
|
RandomPositionByRate(shape, rate=0.0001, poisson=True)
¶
Select random positions by rate.
This function generate positions by n ~ Possion(N_all * rate).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
rate |
float
|
Rate of each position to be chosen. |
0.0001
|
poisson |
bool
|
Enable poisson samping, which is more accurate when rate is quite small. |
True
|
Info
rate stands for tensor value selected rate here. To calculate the bit error rate on bit flip experiment,
it needs to be additionally divided by the bit width.
RandomPositionByRate_classic(shape, rate=0.0001)
¶
Select random positions by rate.
This function generate positions by sampling on all value.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
rate |
float
|
Rate of each position to be chosen. |
0.0001
|
Deprecated
This function is deprecated and only for test because of low performance.
MaskedDimRandomPositionByNumber(shape, n=1, **kwargs)
¶
Select n positions after specifed dimensions are masked.
Use a list to indicate which values on a certain dimension are not selected.
For a 2-D tensor, it is equivalent to selecting on a submatrix where some rows and cols are masked.
Tip
MaskedDim- and SelectedDim- selectors can be used for fine-grained evaluate and selective protect experiments, including instance-wise, channel-wise and spatial-wise.
Info
Mask argeuments follow common pytorch memory layout:
-
CNN feature map: (
instance,channel,height,width) -
CNN weight: (
out_channel,in_channel,height,width) -
Full connect layer: (
instance,neuron) -
Full connect weight: (
out,in)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n |
int
|
number of position to select. |
1
|
**kwargs |
dict
|
instance(dim = 0), type channel(dim = 1), type height(dim = 2), type width(dim = 3), type out_channel(dim = 0), type in_channel(dim = 1), type out(dim = 0), type in(dim = 1), type neuron(dim = 1), type |
{}
|
SelectedDimRandomPositionByNumber(shape, n=1, **kwargs)
¶
Select n positions on selected coordinate.
For argument list, please refer
MaskedDimRandomPositionByNumber.
Note if one dimension selection list is not specified, it stands for all of this dimension are possible selected.
MaskedDimRandomPositionByRate(shape, rate, poisson=True, **kwargs)
¶
Select by rate where some coordinate are masked.
For argument list, please refer
MaskedDimRandomPositionByNumber.
SelectedDimRandomPositionByRate(shape, rate, poisson=True, **kwargs)
¶
Select on some coordinate by rate.
For argument list, please refer
MaskedDimRandomPositionByNumber.
Note if one dimension selection list is not specified, it stands for all of this dimension are possible selected.
FixedPixelByNumber(shape, n, pixel, per_instance=False)
¶
Select n random channel on one fixed pixel.
Pixel is on H * W dimension.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n |
int
|
number of positions |
required |
pixel |
Union[int, tuple]
|
An 2-d coordinate tuple specified target pixel |
required |
per_instance |
bool
|
if |
False
|