Я пытаюсь понять, что делает оболочка TimeDistributed в Керасе.
Я понимаю, что TimeDistributed «применяет слой к каждому временному фрагменту ввода».
Но я провел некоторый эксперимент и получил результаты, которых не могу понять.
Короче говоря, применительно к слою LSTM, TimeDistributed и просто Dense дают одинаковые результаты.
model = Sequential()
model.add(LSTM(5, input_shape = (10, 20), return_sequences = True))
model.add(TimeDistributed(Dense(1)))
print(model.output_shape)
model = Sequential()
model.add(LSTM(5, input_shape = (10, 20), return_sequences = True))
model.add((Dense(1)))
print(model.output_shape)
Для обеих моделей я получил форму вывода (Нет, 10, 1) .
Может ли кто-нибудь объяснить разницу между слоем TimeDistributed и Dense после слоя RNN?
Dense
слоем, сглаживающим ввод, а затем изменяющим его форму, таким образом, соединяя разные временные шаги и имея больше параметров, иTimeDistributed
сохраняя временные шаги разделенными (следовательно, имеющими меньше параметров). В вашем случаеDense
должно было быть 500 параметров,TimeDistributed
только 50