Spec-Zone.ru › TensorFlow

tf.keras.layers.RNN

Базовый класс для рекуррентных слоёв.

Наследуется от: Layer, Operation

tf.keras.layers.RNN(
    cell,
    return_sequences=False,
    return_state=False,
    go_backwards=False,
    stateful=False,
    unroll=False,
    zero_output_for_mask=False,
    **kwargs
)

Используется в ноутбуках

Используется в учебниках
  • Прогнозирование временных рядов
Аргументы
cell Экземпляр ячейки RNN или список экземпляров ячеек RNN. Ячейка RNN — это класс, который имеет:
  • Метод call(input_at_t, states_at_t), возвращающий (output_at_t, states_at_t_plus_1). Метод вызова ячейки также может принимать необязательный аргумент constants, см. раздел «Примечание по передаче внешних констант» ниже.
  • Атрибут state_size. Он может быть одиночным целым числом (одиночное состояние), в этом случае это размер состояния рекурсии. Он также может быть списком/кортежем целых чисел (размер каждого состояния).
  • Атрибут output_size, целое число.
  • Метод get_initial_state(batch_size=None), создающий тензор, предназначенный для подачи в call() в качестве начального состояния, если пользователь не указал начальное состояние другими способами. Возвращаемое начальное состояние должно иметь форму (batch_size, cell.state_size). Ячейка может выбрать создание тензора, заполненного нулями, или других значений, исходя из реализации ячейки. inputs — это входной тензор слоя RNN, с формой (batch_size, timesteps, features). Если этот метод не реализован ячейкой, слой RNN создаст тензор, заполненный нулями, с формой (batch_size, cell.state_size). В случае, если cell — это список экземпляров ячеек RNN, ячейки будут размещены друг над другом в RNN, что обеспечит эффективную стопку RNN.
return_sequences Булево значение (по умолчанию False). Возвращать ли только последнее выходное значение в последовательности выходов или всю последовательность.
return_state Булево значение (по умолчанию False). Возвращать ли последнее состояние помимо выхода.
go_backwards Булево значение (по умолчанию False). Если True, обрабатывать последовательность в обратном порядке и возвращать обращенную последовательность.
stateful Булево значение (по умолчанию False). Если True, последнее состояние для каждого образца с индексом i в пакете будет использоваться в качестве начального состояния для образца с индексом i в следующем пакете.
unroll Булево значение (по умолчанию False). Если True, сеть будет развернута, в противном случае будет использоваться символический цикл. Развертывание может ускорить RNN, хотя оно обычно более ресурсоёмкое. Развертывание подходит только для коротких последовательностей.
zero_output_for_mask Булево значение (по умолчанию False). Использовать ли нули для замаскированных временных шагов в выходе. Обратите внимание, что этот параметр используется только когда return_sequences равно True и mask предоставлен. Это может быть полезно, если вы хотите повторно использовать исходную выходную последовательность RNN без вмешательства от замаскированных временных шагов, например, объединяя двунаправленные RNN.
Аргументы вызова
inputs Входной тензор.
initial_state Список начальных тензоров состояния, которые необходимо передать в первый вызов ячейки.
mask Бинарный тензор формы [batch_size, timesteps], указывающий, должен ли быть замаскирован данный временной шаг. Отдельный элемент True указывает, что соответствующий временной шаг должен быть использован, а элемент False указывает, что соответствующий временной шаг должен быть пропущен.
training Булево значение Python, указывающее, должен ли слой работать в режиме обучения или в режиме предсказания. Этот аргумент передается ячейке при её вызове. Это используется для ячеек, которые используют дропаут.
Форма входных данных
3-мерный тензор с формой (batch_size, timesteps, features).

Форма вывода:

  • Если return_state: список тензоров. Первый тензор — это выход. Остальные тензоры — это последние состояния, каждое с формой (batch_size, state_size), где state_size может быть формой тензора высокой размерности.
  • Если return_sequences: 3-мерный тензор с формой (batch_size, timesteps, output_size).

Маскирование:

Этот слой поддерживает маскирование входных данных с переменным количеством временных шагов. Для введения масок в данные используйте слой keras.layers.Embedding со значением параметра mask_zero, равным True.

Примечание по использованию состояния в RNN:

Вы можете задать слои RNN в «состоятельном» режиме, что означает, что состояния, вычисленные для образцов в одном пакете, будут повторно использованы в качестве начальных состояний для образцов в следующем пакете. Это предполагает взаимно-однозначное соответствие между образцами в разных последовательных пакетах.

Для включения состоятельности:

  • Укажите stateful=True в конструкторе слоя.
  • Укажите фиксированный размер пакета для вашей модели, передав Если последовательная модель: batch_input_shape=(...) первому слою вашей модели. В противном случае, для функциональной модели с 1 или более входными слоями: batch_shape=(...) всем первым слоям вашей модели. Это ожидаемая форма ваших входов включая размер пакета. Это должен быть кортеж целых чисел, например, (32, 10, 100).
  • Укажите shuffle=False при вызове fit().

Для сброса состояния вашей модели вызовите .reset_states() либо на конкретном слое, либо на всей вашей модели.

Примечание по указанию начального состояния RNN:

Вы можете указать начальное состояние слоёв RNN символически, вызвав их с аргументом ключевого слова initial_state. Значение initial_state должно быть тензором или списком тензоров, представляющих начальное состояние слоя RNN.

Вы можете указать начальное состояние слоёв RNN численно, вызвав reset_states с аргументом ключевого слова states. Значение states должно быть массивом NumPy или списком массивов NumPy, представляющих начальное состояние слоя RNN.

Примеры:

from keras.src.layers import RNN
from keras.src import ops

# First, let's define a RNN Cell, as a layer subclass.
class MinimalRNNCell(keras.layers.Layer):

    def __init__(self, units, **kwargs):
        super().__init__(**kwargs)
        self.units = units
        self.state_size = units

    def build(self, input_shape):
        self.kernel = self.add_weight(shape=(input_shape[-1], self.units),
                                      initializer='uniform',
                                      name='kernel')
        self.recurrent_kernel = self.add_weight(
            shape=(self.units, self.units),
            initializer='uniform',
            name='recurrent_kernel')
        self.built = True

    def call(self, inputs, states):
        prev_output = states[0]
        h = ops.matmul(inputs, self.kernel)
        output = h + ops.matmul(prev_output, self.recurrent_kernel)
        return output, [output]

# Let's use this cell in a RNN layer:

cell = MinimalRNNCell(32)
x = keras.Input((None, 5))
layer = RNN(cell)
y = layer(x)

# Here's how to use the cell to build a stacked RNN:

cells = [MinimalRNNCell(32), MinimalRNNCell(64)]
x = keras.Input((None, 5))
layer = RNN(cells)
y = layer(x)
Атрибуты
input Получает входной(ые) тензор(ы) символической операции.

Возвращает только тензор(ы), соответствующие первому вызову операции.

output Получает выходной(ые) тензор(ы) слоя.

Возвращает только тензор(ы), соответствующие первому вызову операции.

Методы

from_config

Просмотреть исходный код

@classmethod
from_config(
    config, custom_objects=None
)

Создаёт слой по его конфигурации.

Этот метод является обратным get_config, способным создать тот же слой из словаря конфигурации. Он не обрабатывает подключение слоёв (это обрабатывает Network), а также веса (это обрабатывает set_weights).

Аргументы
config Словарь Python, обычно результат get_config.
Возвращаемое значение
Экземпляр слоя.

get_initial_state

Просмотреть исходный код

get_initial_state(
    batch_size
)

inner_loop

Просмотреть исходный код

inner_loop(
    sequences, initial_state, mask, training=False
)

reset_state

Просмотреть исходный код

reset_state()

reset_states

Просмотреть исходный код

reset_states()

symbolic_call

Просмотреть исходный код

symbolic_call(
    *args, **kwargs
)

© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/keras/layers/RNN

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API