mindspore.nn.LSTMCell
- class mindspore.nn.LSTMCell(*args, **kwargs)[source]
A LSTM (Long Short-Term Memory) cell.
\[\begin{split}\begin{array}{ll} \\ i_t = \sigma(W_{ix} x_t + b_{ix} + W_{ih} h_{(t-1)} + b_{ih}) \\ f_t = \sigma(W_{fx} x_t + b_{fx} + W_{fh} h_{(t-1)} + b_{fh}) \\ \tilde{c}_t = \tanh(W_{cx} x_t + b_{cx} + W_{ch} h_{(t-1)} + b_{ch}) \\ o_t = \sigma(W_{ox} x_t + b_{ox} + W_{oh} h_{(t-1)} + b_{oh}) \\ c_t = f_t * c_{(t-1)} + i_t * \tilde{c}_t \\ h_t = o_t * \tanh(c_t) \\ \end{array}\end{split}\]Here \(\sigma\) is the sigmoid function, and \(*\) is the Hadamard product. \(W, b\) are learnable weights between the output and the input in the formula. For instance, \(W_{ix}, b_{ix}\) are the weight and bias used to transform from input \(x\) to \(i\). Details can be found in paper LONG SHORT-TERM MEMORY and Long Short-Term Memory Recurrent Neural Network Architectures for Large Scale Acoustic Modeling.
The encapsulated LSTMCell can be simplified to the following formula:
\[h^{'},c^{'} = LSTMCell(x, (h_0, c_0))\]- Parameters
- Inputs:
x (Tensor) - Tensor of shape (batch_size, input_size).
hx (tuple) - A tuple of two Tensors (h_0, c_0) both of data type mindspore.float32 and shape (batch_size, hidden_size). The data type of hx must be the same as x.
- Outputs:
hx’ (Tensor) - A tuple of two Tensors (h’, c’) both of data shape (batch_size, hidden_size).
- Supported Platforms:
Ascend
GPU
CPU
Examples
>>> net = nn.LSTMCell(10, 16) >>> x = Tensor(np.ones([5, 3, 10]).astype(np.float32)) >>> h = Tensor(np.ones([3, 16]).astype(np.float32)) >>> c = Tensor(np.ones([3, 16]).astype(np.float32)) >>> output = [] >>> for i in range(5): ... hx = net(x[i], (h, c)) ... output.append(hx) >>> print(output[0][0].shape) (3, 16)