Объяснение TimeDistributed и RepeatVector в keras

искусственный интеллект
Объяснение TimeDistributed и RepeatVector в keras

Использование TimeDistributed и Dense

Следующий код представляет собой объяснение, данное в keras:

# as the first layer in a model
model = Sequential()
model.add(TimeDistributed(Dense(8), input_shape=(10, 16)))
# now model.output_shape == (None, 10, 8)

Как видно из приведенного выше кода,Распределенное и плотное времяПри совместном использовании он в основном используется в ситуациях «один ко многим» и «многие ко многим». input_shape = (10,16), что указывает на то, что размер шага равен 10, а размер каждого шага равен 16 (т. е. длина атрибута каждых данных равна 16))

Сначала используйте TimeDistributed(Dense(8), input_shape = (10,16)) для изменения размера каждого шага с 16 до 8 без изменения размера шага.

Если форма пакетного ввода этого слоя тогда (50, 10, 16), то выход после этого слоя (50, 10, 8)

2. Использование RepeatVector Это объяснение, данное на официальном сайте keras

model = Sequential()
model.add(Dense(32, input_dim=32))
# now: model.output_shape == (None, 32)
# note: `None` is the batch dimension

model.add(RepeatVector(3))
# now: model.output_shape == (None, 3, 32)

Объяснение: если форма ввода (Нет, 32), после добавления слоя RepeatVector(3) вывод становится (Нет, 3, 32), RepeatVector не меняет размер нашего шага, но изменяет размер каждого шага. (т.е. длина атрибута)