Что означает несколько ядер в слое keras lstm? - PullRequest
1 голос
/ 17 апреля 2019

Вкл. https://keras.io/layers/recurrent/ Я вижу, что слои LSTM имеют kernel и recurrent_kernel.В чем их смысл?В моем понимании нам нужны веса для 4-х шлюзов ячейки LSTM.Однако в реализации keras kernel имеет форму (input_dim, 4 * единицы), а recurrent_kernel имеет форму (единицы, 4 * единицы).Итак, оба они как-то реализуют врата?

1 Ответ

2 голосов
/ 17 апреля 2019

Поправьте меня, если я ошибаюсь, но если вы посмотрите на уравнения LSTM:

enter image description here

У вас есть 4 W матриц, которые преобразуют входные данные, и 4 U матриц, которые преобразуют скрытое состояние.

Keras сохраняет эти наборы из 4 матриц в массивы kernel и recurrent_kernel. С код, который их использует :

        self.kernel_i = self.kernel[:, :self.units]
        self.kernel_f = self.kernel[:, self.units: self.units * 2]
        self.kernel_c = self.kernel[:, self.units * 2: self.units * 3]
        self.kernel_o = self.kernel[:, self.units * 3:]

        self.recurrent_kernel_i = self.recurrent_kernel[:, :self.units]
        self.recurrent_kernel_f = (
            self.recurrent_kernel[:, self.units: self.units * 2])
        self.recurrent_kernel_c = (
            self.recurrent_kernel[:, self.units * 2: self.units * 3])
self.recurrent_kernel_o = self.recurrent_kernel[:, self.units * 3:]

Очевидно, что 4 матрицы хранятся в массивах весов, сцепленных по второму измерению, что объясняет формы массива весов.

...