Класс GRU
Класс GRU создает слой gated recurrent unit (GRU) -
разновидность рекуррентного слоя, который эффективно
обрабатывает последовательности и борется с проблемой
затухающих градиентов. Первым параметром передается
целое число - размерность выходного пространства
(количество нейронов). Вторым параметром можно передать
функцию активации. Также доступны параметры
return_sequences, return_state,
dropout и recurrent_dropout.
Синтаксис
tf.keras.layers.GRU(units, activation='tanh', return_sequences=False, return_state=False)
Пример
Давайте создадим слой GRU с 4 нейронами
и применим его к последовательности:
import tensorflow as tf
tf.random.set_seed(0)
layer = tf.keras.layers.GRU(4)
t = tf.constant([[[1.0], [2.0], [3.0]]])
res = layer(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[-0.23548102 -0.37833548 0.50695163 0.21987328]], shape=(1, 4), dtype=float32)
Пример
Давайте создадим слой GRU с параметром
return_sequences=True, чтобы получить выход
для каждого шага последовательности:
Результат выполнения кода:
tf.Tensor(
[[[-0.15536177 -0.38335723 0.22135894 0.40063828]
[-0.28858376 -0.35685158 0.47121152 0.27366146]
[-0.23548102 -0.37833548 0.50695163 0.21987328]]], shape=(1, 3, 4), dtype=float32)
Пример
Давайте создадим модель с входным слоем, слоем GRU и полносвязным слоем:
import tensorflow as tf
tf.random.set_seed(0)
model = tf.keras.Sequential([
tf.keras.layers.Input(shape=(3, 1)),
tf.keras.layers.GRU(4),
tf.keras.layers.Dense(1)
])
t = tf.constant([[[1.0], [2.0], [3.0]]])
res = model(t)
print(res)
Результат выполнения кода:
tf.Tensor([[-0.25899073]], shape=(1, 1), dtype=float32)
Смотрите также
-
класс
LSTM,
который создает слой long short-term memory -
класс
SimpleRNN,
который создает простой рекуррентный слой -
класс
Bidirectional,
который создает двунаправленную обертку для рекуррентных слоев -
класс
Dense,
который создает полносвязный слой