РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
219 of 824 menu

Класс TimeDistributed

Класс TimeDistributed оборачивает другой слой и применяет его к каждому временному шагу входного тензора независимо. Это позволяет использовать обычные слои, такие как Dense или Conv2D, для обработки последовательностей. Первым параметром класс принимает слой, который нужно обернуть. Вторым параметром можно передать дополнительные аргументы, например input_shape.

Синтаксис

tf.keras.layers.TimeDistributed(layer, **kwargs)

Пример

Давайте создадим модель с оберткой TimeDistributed вокруг слоя Dense и применим ее к последовательности:

import tensorflow as tf tf.random.set_seed(0) model = tf.keras.Sequential([ tf.keras.layers.TimeDistributed( tf.keras.layers.Dense(4), input_shape=(3, 5) ) ]) t = tf.constant([[[1.0, 2.0, 3.0, 4.0, 5.0], [6.0, 7.0, 8.0, 9.0, 10.0], [11.0, 12.0, 13.0, 14.0, 15.0]]]) res = model(t) print(res.shape)

Результат выполнения кода:

(1, 3, 4)

Пример

Давайте применим TimeDistributed к слою Conv2D для обработки последовательности изображений:

import tensorflow as tf tf.random.set_seed(0) model = tf.keras.Sequential([ tf.keras.layers.TimeDistributed( tf.keras.layers.Conv2D(2, (3, 3), activation='relu'), input_shape=(4, 8, 8, 1) ) ]) t = tf.random.normal((1, 4, 8, 8, 1)) res = model(t) print(res.shape)

Результат выполнения кода:

(1, 4, 6, 6, 2)

Пример

Давайте используем TimeDistributed с слоем Flatten для преобразования каждого временного шага:

<+python+> import tensorflow as tf tf.random.set_seed(0) model = tf.keras.Sequential([ tf.keras.layers.TimeDistributed( tf.keras.layers.Flatten(), input_shape=(2, 3, 4) ) ]) t = tf.constant([[[[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [9.0, 10.0, 11.0, 12.0]], [[13.0, 14.0, 15.0, 16.0], [17.0, 18.0, 19.0, 20.0], [21.0, 22.0, 23.0, 24.0]]]]) res = model(t) print(res.shape) <-python+>

Результат выполнения кода:

(1, 2, 12)

Смотрите также

  • слой Dense,
    который часто оборачивается в TimeDistributed
  • слой LSTM,
    который работает с последовательностями напрямую
  • слой Bidirectional,
    который обрабатывает последовательности в двух направлениях
  • слой RepeatVector,
    который повторяет вектор для создания последовательности
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить