Dense vs. TimeDistributed (Dense) - PullRequest
       20

Dense vs. TimeDistributed (Dense)

0 голосов
/ 22 апреля 2020

Есть ли разница между этими двумя методами использования слоя Dense? Кажется, форма вывода одинакова, а число параметров одинаково.

  1. Будет ли вывод одинаковым, если мы используем фиксированные веса?
  2. Будет ли результат одинаковым во время тренировки?
def test_rnn_output_v1():

    max_seq_length = 10
    n_features = 8
    rnn_dim = 64
    dense_dim = 16

    input = Input(shape=(max_seq_length, n_features))
    out = LSTM(rnn_dim, return_sequences=True)(input)
    out = Dense(dense_dim)(out)

    model = Model(inputs=[input], outputs=out)

    print(model.summary())

    # (None, max_seq_length, n_features)
    # (None, max_seq_length, dense_dim)

def test_rnn_output_v2():

    max_seq_length = 10
    n_features = 8
    rnn_dim = 64
    dense_dim = 16

    input = Input(shape=(max_seq_length, n_features))
    out = LSTM(rnn_dim, return_sequences=True)(input)
    out = TimeDistributed(Dense(dense_dim))(out)

    model = Model(inputs=[input], outputs=out)

    print(model.summary())

    # (None, max_seq_length, n_features)
    # (None, max_seq_length, dense_dim)

1 Ответ

1 голос
/ 23 апреля 2020

Нет никакой разницы между TimeDistributed(Dense(...)) и Dense(...), и они имеют одинаковое выходное измерение и подключение. Это потому, что слой Dense наносится на последнюю ось его ввода; следовательно, это не имеет значения, если он обернут в слой TimeDistributed или нет. Этот ответ объясняет работу слоя Dense более подробно.

...