GeneralizedAttention¶
- class mmcv.cnn.GeneralizedAttention(in_channels: int, spatial_range: int = - 1, num_heads: int = 9, position_embedding_dim: int = - 1, position_magnitude: int = 1, kv_stride: int = 2, q_stride: int = 1, attention_type: str = '1111')[源代码]¶
GeneralizedAttention module.
See ‘An Empirical Study of Spatial Attention Mechanisms in Deep Networks’ (https://arxiv.org/abs/1904.05873) for details.
- 参数
in_channels (int) – Channels of the input feature map.
spatial_range (int) – The spatial range. -1 indicates no spatial range constraint. Default: -1.
num_heads (int) – The head number of empirical_attention module. Default: 9.
position_embedding_dim (int) – The position embedding dimension. Default: -1.
position_magnitude (int) – A multiplier acting on coord difference. Default: 1.
kv_stride (int) – The feature stride acting on key/value feature map. Default: 2.
q_stride (int) – The feature stride acting on query feature map. Default: 1.
attention_type (str) –
A binary indicator string for indicating which items in generalized empirical_attention module are used. Default: ‘1111’.
’1000’ indicates ‘query and key content’ (appr - appr) item,
’0100’ indicates ‘query content and relative position’ (appr - position) item,
’0010’ indicates ‘key content only’ (bias - appr) item,
’0001’ indicates ‘relative position only’ (bias - position) item.
- forward(x_input: torch.Tensor) → torch.Tensor[源代码]¶
Defines the computation performed at every call.
Should be overridden by all subclasses.
注解
Although the recipe for forward pass needs to be defined within this function, one should call the
Module
instance afterwards instead of this since the former takes care of running the registered hooks while the latter silently ignores them.