Функция шага RNN. Аргументы: вход; тензор с формой (samples, ...) (без временной размерности), представляющий вход для пакета образцов в определённый момент времени. состояния; список тензоров. Возвращаемое значение: выход; тензор с формой (samples, output_dim) (без временной размерности). новые_состояния; список тензоров, с той же длиной и формами, что и 'состояния'. Первый элемент списка должен быть выходным тензором на предыдущем временном шаге.
inputs
Тензор временных данных с формой (samples, time, ...) (по крайней мере 3D), или вложенные тензоры, каждый из которых имеет форму (samples, time, ...).
initial_states
Тензор с формой (samples, state_size) (без временной размерности), содержащий начальные значения для состояний, используемых в функции шага. В случае, если размер состояния имеет вложенную форму, форма initial_states также будет следовать этой вложенной структуре.
go_backwards
Булево значение. Если True, итерация по временной размерности выполняется в обратном порядке и возвращается обращённая последовательность.
mask
Бинарный тензор с формой (samples, time, 1), содержащий ноль для каждого элемента, который замаскирован.
constants
Список константных значений, передаваемых на каждом шаге.
unroll
Нужно ли развернуть RNN или использовать символическую while_loop.
input_length
Целое число или 1-мерный тензор, в зависимости от того, является ли временная размерность фиксированной длины или нет. В случае входных данных переменной длины используется для маскирования, если нет заданной маски.
time_major
Булево значение. Если True, входные и выходные данные будут иметь форму (timesteps, batch, ...), в противном случае – (batch, timesteps, ...). Использование time_major = True немного эффективнее, поскольку оно избегает транспонирования в начале и в конце вычисления RNN. Однако большинство данных TensorFlow имеют порядок «пакет-главный», поэтому по умолчанию эта функция принимает входные данные и выдает выходные данные в форме «пакет-главный».
zero_output_for_mask
Булево значение. Если True, выходной тензор для замаскированного временного шага будет нулевым, в противном случае возвращается выходной тензор от предыдущего временного шага.
return_all_outputs
Булево значение. Если True, возвращаются рекуррентные выходы для всех временных шагов в последовательности. Если False, возвращается только выход для последнего временного шага (что потребляет меньше памяти).
Возвращаемое значение
Кортеж, (last_output, outputs, new_states). last_output: последний выход RNN, форма (samples, ...) выходы:
- If `return_all_outputs=True`: a tensor with shape
`(samples, time, ...)` where each entry `outputs[s, t]` is the
output of the step function at time `t` for sample `s`
- Else, a tensor equal to `last_output` with shape
`(samples, 1, ...)`
new_states: список тензоров, последние состояния, возвращённые функцией шага, форма (samples, ...).
Исключения
ValueError
если размерность входа меньше 3.
ValueError
если unroll задано как True, но временной шаг ввода не является фиксированным числом.
ValueError
если mask задано (а не None), но состояния не заданы (len(states) == 0).