Прежде всего, для RNN в целом измерение времени может быть произвольным. Для вашего случая это означает, что число 29 не играет никакой роли. Число 2040 полностью состоит из чисел 13 (особенности) и 20 (единицы в ГРУ).
Чтобы понять, откуда исходит число, взгляните на эту картинку из wikipedia :
Так выглядит базовая ячейка GRU.
Чтобы понять размеры переменной, взгляните на эту формулу из той же статьи в Википедии:
Чтобы разобраться в этом, вам нужно только знать, что входные векторы 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, но все, что там сказано, относится и к ГРУ.