Понимание формы весов ячейки LSTM с двумерным входным тензором - PullRequest
0 голосов
/ 04 сентября 2018

Я строю простую модель LSTM следующим образом:

model = Sequential()
model.add(LSTM(10, return_sequences = False, input_shape = (8, 8)))
model.add(Activation('softmax'))

model.compile(loss = 'categorical_crossentropy', optimizer = adam, metrics = ['accuracy'])

Здесь мой вклад - это символ формы (8,8). Из обученной модели из этой сети, когда я сбрасываю веса, я получаю значения как:

print(model.layers.layer[0].get_weights[0].shape) # W [W_i, W_f, W_c, W_o]
print(model.layers.layer[0].get_weights[1].shape) # U
print(model.layers.layer[0].get_weights[2].shape) # b

Выходы:

(8, 40)
(10, 40)
(40,)

W представляет собой комбинированную матрицу из W_i, W_f, W_c и W_o каждая с (8, 10). Но это не соответствует уравнению:

f_t = sigmoid( W_f * x + U_f * h_{t-1} + b_f )

Если я возьму только размерность матрицы вышеприведенного уравнения, это будет выглядеть так:

W_f' * x + U_f' * h_{t-1} + b_f 
    --> [10, 8] x [8, 8] + [10, 10] x [10, 1] + [10, 1] 
    --> [10, 8] + [10, 1] + [10, 1]

Итак, глядя на вышеприведенное уравнение, кажется, что форма X(input_tensor) неверна. Кажется, что только форма входного вектора соответствует приведенному выше уравнению. Может кто-нибудь помочь мне понять вышеприведенное уравнение с формой ввода как 2-D?

1024 * ТИА *

1 Ответ

0 голосов
/ 04 сентября 2018

Упомянутое вами уравнение предназначено для вычисления выходных данных для t -го временного шага. Следовательно, используется только вход с временным шагом t (т. Е. x_t), а не все входы (т. Е. x):

f_t = sigmoid( W_f * x_{t} + U_f * h_{t-1} + b_f )

В результате мы получили бы:

W_f' * x + U_f' * h_{t-1} + b_f 
    --> [10, 8] x [8, 1] + [10, 10] x [10, 1] + [10, 1] 
    --> [10, 1] + [10, 1] + [10, 1]
    --> [10, 1] # output at timestep t

И это согласуется с тем, для чего предназначены слои LSTM: они получают входные данные с временным шагом t и выдают выходные данные на основе этого входного сигнала и состояния, полученного в результате обработки первого до (t-1) -ого временного шага. .

...