# RNNCell¶

class torch.nn.RNNCell(input_size: int, hidden_size: int, bias: bool = True, nonlinearity: str = 'tanh')[source]

An Elman RNN cell with tanh or ReLU non-linearity.

$h' = \tanh(W_{ih} x + b_{ih} + W_{hh} h + b_{hh})$

If nonlinearity is ‘relu’, then ReLU is used in place of tanh.

Parameters
• input_size – The number of expected features in the input x

• hidden_size – The number of features in the hidden state h

• bias – If False, then the layer does not use bias weights b_ih and b_hh. Default: True

• nonlinearity – The non-linearity to use. Can be either 'tanh' or 'relu'. Default: 'tanh'

Inputs: input, hidden
• input of shape (batch, input_size): tensor containing input features

• hidden of shape (batch, hidden_size): tensor containing the initial hidden state for each element in the batch. Defaults to zero if not provided.

Outputs: h’
• h’ of shape (batch, hidden_size): tensor containing the next hidden state for each element in the batch

Shape:
• Input1: $(N, H_{in})$ tensor containing input features where $H_{in}$ = input_size

• Input2: $(N, H_{out})$ tensor containing the initial hidden state for each element in the batch where $H_{out}$ = hidden_size Defaults to zero if not provided.

• Output: $(N, H_{out})$ tensor containing the next hidden state for each element in the batch

Variables
• ~RNNCell.weight_ih – the learnable input-hidden weights, of shape (hidden_size, input_size)

• ~RNNCell.weight_hh – the learnable hidden-hidden weights, of shape (hidden_size, hidden_size)

• ~RNNCell.bias_ih – the learnable input-hidden bias, of shape (hidden_size)

• ~RNNCell.bias_hh – the learnable hidden-hidden bias, of shape (hidden_size)

Note

All the weights and biases are initialized from $\mathcal{U}(-\sqrt{k}, \sqrt{k})$ where $k = \frac{1}{\text{hidden\_size}}$

Examples:

>>> rnn = nn.RNNCell(10, 20)
>>> input = torch.randn(6, 3, 10)
>>> hx = torch.randn(3, 20)
>>> output = []
>>> for i in range(6):
hx = rnn(input[i], hx)
output.append(hx)