Представьте, что у вас есть пакет из 4 временных шагов, каждый из которых содержит 3-элементный вектор.Давайте представим это следующим образом:
![Input batch](https://i.stack.imgur.com/wbOQt.png)
Теперь вы хотите преобразовать этот пакет, используя плотный слой, так что вы получаете 5 объектов за шаг по времени.Выходные данные слоя можно представить примерно так:
![Output batch](https://i.stack.imgur.com/4qCR8.png)
Вы рассматриваете два варианта: TimeDistributed
плотный слой или изменение формы какплоский ввод, нанесение плотного слоя и изменение формы к временным шагам.
В первом варианте вы будете применять плотный слой с 3 входами и 5 выходами для каждого временного шага.Это может выглядеть так:
![TimeDistributed layer](https://i.stack.imgur.com/PHfdF.png)
Каждый синий круг - это единица в плотном слое.Делая это с каждым шагом ввода времени, вы получите общий результат.Важно отметить, что эти пять единиц одинаковы для всех временных шагов, поэтому у вас есть только параметры одного плотного слоя с 3 входами и 5 выходами.
Второй вариант предполагает сглаживание входа в 12-элемент вектора, применяя плотный слой с 12 входами и 20 выходами, а затем изменяя его обратно.Вот как это будет выглядеть:
![Flat dense layer](https://i.stack.imgur.com/r590r.png)
Здесь для ясности показаны входные соединения только одного блока, но каждый блок будет подключен к каждому входу,Здесь, очевидно, у вас есть гораздо больше параметров (параметров плотного слоя с 12 входами и 20 выходами), а также обратите внимание, что на каждое выходное значение влияет каждое входное значение, поэтому значения в одном временном шаге будут влиять на выходы в других временных шагах.,Является ли это чем-то хорошим или плохим, зависит от вашей проблемы и модели, но это важное различие по сравнению с предыдущим, где каждый шаг ввода-вывода времени был независимым.В дополнение к этому, эта конфигурация требует, чтобы вы использовали фиксированное количество временных шагов в каждой партии, тогда как предыдущий работает независимо от количества временных шагов.
Вы также можете рассмотреть вариант с четырьмя плотными слоями.каждый применялся независимо к каждому временному шагу (я не рисовал его, но, надеюсь, вы поняли).Это было бы аналогично предыдущему, только каждое устройство будет получать входные соединения только от своих соответствующих входов с временным шагом.Я не думаю, что есть простой способ сделать это в Keras, вам придется разделить входные данные на четыре, применить плотные слои к каждой части и объединить выходные данные.Опять же, в этом случае число временных шагов будет фиксированным.