oneflow.nn.LSTMCell¶
-
class
oneflow.nn.LSTMCell(input_size: int, hidden_size: int, bias: bool = True, device=None, dtype=None)¶ A long short-term memory (LSTM) cell.
\[\begin{split}\begin{array}{ll} i = \sigma(W_{ii} x + b_{ii} + W_{hi} h + b_{hi}) \\ f = \sigma(W_{if} x + b_{if} + W_{hf} h + b_{hf}) \\ g = \tanh(W_{ig} x + b_{ig} + W_{hg} h + b_{hg}) \\ o = \sigma(W_{io} x + b_{io} + W_{ho} h + b_{ho}) \\ c' = f * c + i * g \\ h' = o * \tanh(c') \\ \end{array}\end{split}\]where \(\sigma\) is the sigmoid function, and \(*\) is the Hadamard product.
The interface is consistent with PyTorch. The documentation is referenced from: https://pytorch.org/docs/1.10/generated/torch.nn.LSTMCell.html.
- 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
- Inputs: input, (h_0, c_0)
input of shape (batch, input_size) or (input_size): tensor containing input features
h_0 of shape (batch, hidden_size) or (hidden_size): tensor containing the initial hidden state
c_0 of shape (batch, hidden_size) or (hidden_size): tensor containing the initial cell state
If (h_0, c_0) is not provided, both h_0 and c_0 default to zero.
- Outputs: (h_1, c_1)
h_1 of shape (batch, hidden_size) or (hidden_size): tensor containing the next hidden state
c_1 of shape (batch, hidden_size) or (hidden_size): tensor containing the next cell state
-
weight_ih¶ the learnable input-hidden weights, of shape (4*hidden_size, input_size)
-
weight_hh¶ the learnable hidden-hidden weights, of shape (4*hidden_size, hidden_size)
-
bias_ih¶ the learnable input-hidden bias, of shape (4*hidden_size)
-
bias_hh¶ the learnable hidden-hidden bias, of shape (4*hidden_size)
Note
All the weights and biases are initialized from \(\mathcal{U}(-\sqrt{k}, \sqrt{k})\) where \(k = \frac{1}{\text{hidden\_size}}\)
For example:
>>> import oneflow as flow >>> import oneflow.nn as nn >>> rnn = nn.LSTMCell(10, 20) # (input_size, hidden_size) >>> input = flow.randn(2, 3, 10) # (time_steps, batch, input_size) >>> hx = flow.randn(3, 20) # (batch, hidden_size) >>> cx = flow.randn(3, 20) >>> hx, cx = rnn(input[0], (hx, cx)) >>> hx.size() oneflow.Size([3, 20])
-
__init__(input_size: int, hidden_size: int, bias: bool = True, device=None, dtype=None) → None¶ Initialize self. See help(type(self)) for accurate signature.
Methods
__call__(*args, **kwargs)Call self as a function.
__delattr__(name, /)Implement delattr(self, name).
__dir__()Default dir() implementation.
__eq__(value, /)Return self==value.
__format__(format_spec, /)Default object formatter.
__ge__(value, /)Return self>=value.
__getattr__(name)__getattribute__(name, /)Return getattr(self, name).
__gt__(value, /)Return self>value.
__hash__()Return hash(self).
__init__(input_size, hidden_size[, bias, …])Initialize self.
__init_subclass__This method is called when a class is subclassed.
__le__(value, /)Return self<=value.
__lt__(value, /)Return self<value.
__ne__(value, /)Return self!=value.
__new__(**kwargs)Create and return a new object.
__reduce__()Helper for pickle.
__reduce_ex__(protocol, /)Helper for pickle.
__repr__()Return repr(self).
__setattr__(name, value)Implement setattr(self, name, value).
__sizeof__()Size of object in memory, in bytes.
__str__()Return str(self).
__subclasshook__Abstract classes can override this to customize issubclass().
_apply(fn[, applied_dict])_get_name()_load_from_state_dict(state_dict, prefix, …)_named_members(get_members_fn[, prefix, recurse])_save_to_state_dict(destination, prefix, …)_shallow_repr()add_module(name, module)Adds a child module to the current module.
apply(fn)Applies
fnrecursively to every submodule (as returned by.children()) as well as self.buffers([recurse])Returns an iterator over module buffers.
children()Returns an iterator over immediate children modules.
cpu()Moves all model parameters and buffers to the CPU.
cuda([device])Moves all model parameters and buffers to the GPU.
double()Casts all floating point parameters and buffers to
doubledatatype.eval()Sets the module in evaluation mode.
extra_repr()Set the extra representation of the module
float()Casts all floating point parameters and buffers to
floatdatatype.forward(input[, hx])half()Casts all floating point parameters and buffers to
halfdatatype.load_state_dict(state_dict[, strict])Copies parameters and buffers from
state_dictinto this module and its descendants.modules()Returns an iterator over all modules in the network.
named_buffers([prefix, recurse])Returns an iterator over module buffers, yielding both the name of the buffer as well as the buffer itself.
named_children()Returns an iterator over immediate children modules, yielding both the name of the module as well as the module itself.
named_modules([memo, prefix])Returns an iterator over all modules in the network, yielding both the name of the module as well as the module itself.
named_parameters([prefix, recurse])Returns an iterator over module parameters, yielding both the name of the parameter as well as the parameter itself.
parameters([recurse])Returns an iterator over module parameters.
register_buffer(name, tensor[, persistent])Adds a buffer to the module.
register_forward_hook(hook)Registers a forward hook on the module.
register_forward_pre_hook(hook)Registers a forward pre-hook on the module.
register_parameter(name, param)Adds a parameter to the module.
reset_parameters()state_dict([destination, prefix, keep_vars])Returns a dictionary containing a whole state of the module.
to([device])Moves the parameters and buffers.
to_consistent(*args, **kwargs)This interface is no longer available, please use
oneflow.nn.Module.to_global()instead.to_global([placement, sbp])Convert the parameters and buffers to global.
train([mode])Sets the module in training mode.
zero_grad([set_to_none])Sets gradients of all model parameters to zero.