# allennlp.modules.matrix_attention.bilinear_matrix_attention#

## BilinearMatrixAttention#

``````BilinearMatrixAttention(
self,
matrix_1_dim: int,
matrix_2_dim: int,
activation: allennlp.nn.activations.Activation = None,
use_input_biases: bool = False,
label_dim: int = 1,
) -> None
``````

Computes attention between two matrices using a bilinear attention function. This function has a matrix of weights `W` and a bias `b`, and the similarity between the two matrices `X` and `Y` is computed as `X W Y^T + b`.

Registered as a `MatrixAttention` with name "bilinear".

Parameters

• matrix_1_dim : `int`, required The dimension of the matrix `X`, described above. This is `X.size()[-1]` - the length of the vector that will go into the similarity computation. We need this so we can build the weight matrix correctly.
• matrix_2_dim : `int`, required The dimension of the matrix `Y`, described above. This is `Y.size()[-1]` - the length of the vector that will go into the similarity computation. We need this so we can build the weight matrix correctly.
• activation : `Activation`, optional (default=linear (i.e. no activation)) An activation function applied after the `X W Y^T + b` calculation. Default is no activation.
• use_input_biases : `bool`, optional (default = False) If True, we add biases to the inputs such that the final computation is equivalent to the original bilinear matrix multiplication plus a projection of both inputs.
• label_dim : `int`, optional (default = 1) The number of output classes. Typically in an attention setting this will be one, but this parameter allows this class to function as an equivalent to `torch.nn.Bilinear` for matrices, rather than vectors.