Понимание архитектуры ГРУ - Керас - PullRequest
4 голосов
/ 20 марта 2019

Я использую функцию распознавания пробуждения от Mycroft AI и пытаюсь понять размеры сети.Следующие строки показывают модель в Керасе:

model = Sequential()
model.add(GRU(
        params.recurrent_units, activation='linear',
        input_shape=(pr.n_features, pr.feature_size), dropout=params.dropout, name='net'))
model.add(Dense(1, activation='sigmoid'))

Мои функции имеют размер 29 * 13.Слой ГРУ имеет 20 единиц.Мой вопрос сейчас, как моя модель может иметь 2040 обучаемых параметров в слое GRU?Как подключены устройства?Возможно, мое общее представление о сети GRU неверно, но я могу найти объяснения только для одной ячейки, а не для всей сети.Сеть GRU полностью подключена?Благодарю вас!

Сетевая архитектура

1 Ответ

1 голос
/ 20 марта 2019

Прежде всего, для RNN в целом измерение времени может быть произвольным. Для вашего случая это означает, что число 29 не играет никакой роли. Число 2040 полностью состоит из чисел 13 (особенности) и 20 (единицы в ГРУ).

Чтобы понять, откуда исходит число, взгляните на эту картинку из wikipedia :

enter image description here

Так выглядит базовая ячейка GRU. Чтобы понять размеры переменной, взгляните на эту формулу из той же статьи в Википедии:

enter image description here

Чтобы разобраться в этом, вам нужно только знать, что входные векторы x[t] имеют размерность 13 в вашем случае и что внутренние состояния и выходы h[t], r[t], z[t], y[t] имеют размерность 20. Как видите, есть несколько мест где параметр измерения используется. Так что я лично не люблю использовать для этого термин «единицы», потому что это говорит о том, что внутри 20 «вещей». Фактически, это просто измерение внутренних состояний, матриц и смещений:

Имея это знание, а также зная, что размеры в формуле должны совпадать, вы можете получить, что матрицы W должны иметь размерность 20 x 13, а матрицы U должны иметь размерность 20 x 20. Смещения b должны иметь размерность 20.

Тогда общее количество параметров рассчитывается как

#Params = 3 * dim(W)
        + 3 * dim(U)
        + 3 * dim(b)
        = 3 * 20*13 + 3 * 20*20 + 3 * 20
        = 2040

Чтобы глубже понять, как работают RNN в Керасе, я настоятельно рекомендую ответы на этот вопрос . Там говорится, что речь идет о LSTM, но все, что там сказано, относится и к ГРУ.

...