Источник

вая тензорshape=[batch_size, max_time, 128] (выход RNN), для которогоmax_time может меняться, я хотел бы применить полностью связанный слой для проецирования данных на[batch_size, max_time, 10] форма.

Вопрос заключается в следующем: нужно ли сначала изменить форму входного тензора, объединяя первые два измерения, затем применить tf.layers.dense, а затем изменить форму обратно в 3D? Или я могу просто использовать tf.layers.dense на 3D-тензоре, чтобы получить эквивалентный эффект?

Я хотел бы иметь общую матрицу весов для всех соединений между 128 модулями RNN и 10 выходными классами, позволяя в то же время иметь переменную длинуmax_time за каждую партию.

Ответы на вопрос(1)

что эти два варианта эквивалентны.

Метод Dense.call () проверяет количество измерений. Если это больше, чем 2, то он вычисляет тензордот (операция, которая соответствует numpy.tensordot) между входом и весами, выбирая в качестве осей последнее измерение на входе и первое измерение в весах. В противном случае применяется стандартное матричное умножение (matmul).

Источник

Ваш ответ на вопрос