tf.contrib.cudnn_rnn.CudnnCompatibleGRUCell
Совместимая с CuDNN ячейка GRU.
Наследуется от: GRUCell
tf.contrib.cudnn_rnn.CudnnCompatibleGRUCell(
num_units, reuse=None, kernel_initializer=None
)
Реализация GRU, аналогичная tf.compat.v1.nn.rnn_cell.GRUCell, для использования вместе с tf.contrib.cudnn_rnn.CudnnGRU. Параметры последней могут быть использованы ею без проблем.
Она отличается от независимых от платформы ячеек GRU способом вычисления нового шлюза памяти. Nvidia выбрала эту разновидность на основе рекомендации автора GRU[1] и того факта, что она не влияет на точность[2]. [1] https://arxiv.org/abs/1406.1078 [2] http://svail.github.io/diff_graphs/
Совместимая с CuDNN ячейка GRU (из руководства пользователя библиотеки CuDNN):
# reset gate
<div> $$r_t = \sigma(x_t * W_r + h_t-1 * R_h + b_{Wr} + b_{Rr})$$ </div>
# update gate
<div> $$u_t = \sigma(x_t * W_u + h_t-1 * R_u + b_{Wu} + b_{Ru})$$ </div>
# new memory gate
<div> $$h'_t = tanh(x_t * W_h + r_t .* (h_t-1 * R_h + b_{Rh}) + b_{Wh})$$ </div>
<div> $$h_t = (1 - u_t) .* h'_t + u_t .* h_t-1$$ </div>
Другая ячейка GRU (см. tf.compat.v1.nn.rnn_cell.GRUCell и tf.contrib.rnn.GRUBlockCell):
# new memory gate
\\(h'_t = tanh(x_t * W_h + (r_t .* h_t-1) * R_h + b_{Wh})\\)
которая не эквивалентна ячейке CuDNN GRU: помимо дополнительного члена смещения b_Rh,
\\(r .* (h * R) != (r .* h) * R\\)
| Атрибуты | |
|---|---|
graph | УСТАРЕВШАЯ ФУНКЦИЯ |
output_size | Целое число или TensorShape: размер выходных данных, производимых этой ячейкой. |
scope_name | |
state_size | Размер(ы) состояния(ий), используемых этой ячейкой. Он может быть представлен целым числом, TensorShape или кортежем целых чисел или TensorShapes. |
Методы
get_initial_state
get_initial_state(
inputs=None, batch_size=None, dtype=None
)
zero_state
zero_state(
batch_size, dtype
)
Возвращает тензор(ы) состояния, заполненные нулями.
| Аргументы | |
|---|---|
batch_size | целое число, вещественное число или тензор единицы, представляющий размер пакета. |
dtype | тип данных для использования в состоянии. |
| Возвращаемые значения | |
|---|---|
Если state_size — целое число или TensorShape, то возвращаемое значение — тензор N-D формы [batch_size, state_size] заполненный нулями. Если |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/contrib/cudnn_rnn/CudnnCompatibleGRUCell