def _setup(self, x, prev_state, prev_output):
"""Setup the cell.
:param x: Input tensor.
:param prev_state: Previous cell state tensor.
:param prev_output: Previous cell output tensor.
:return: Tuple of cell state and cell output tensors.
"""
# Input gate.
i = tf.nn.sigmoid(tf.matmul(x, self._wi) + tf.matmul(prev_output, self._ui) + self._bi)
# Forget gate.
f = tf.nn.sigmoid(tf.matmul(x, self._wf) + tf.matmul(prev_output, self._uf) + self._bf)
# Output gate.
o = tf.nn.sigmoid(tf.matmul(x, self._wo) + tf.matmul(prev_output, self._uo) + self._bo)
# Output and state.
lin_state = tf.matmul(x, self._wc) + tf.matmul(prev_output, self._uc) + self._bc
state = self._activation(lin_state) if self._activation is not None else lin_state
state = f * prev_state + i * state
output = o * state
return state, output
评论列表
文章目录