как соеденить слой эмбединга с LSTM
Кто в силах помочь, мб кто знает работает вплотную с тф. На вход идет матрица к примеру:
[[1, 2, 3, 4],
[4, 5, 6, 1],
[3, 4, 1, 2]]
Её отправляю в эмбеддинг и все нормально обрабатывается. но хочу результат работы ембеддинга отправить в LSTM. т.е. у нас в массиве два массива как два временных шага для рекурентной сети. Я хочу реализовать так что модель принимает этот вход, разбивает его на три матрицы соответственно:
[[1, 2, 3, 4]]
[[4, 5, 6, 1]]
[[3, 4, 1, 2]]
Прогоняет их через ембединги получая другое векторное представление массива. И подать эти два ембединга в LSTM как последовательность из двух массивов.
Вот рабочий пример:
layer_i_inp = Input(shape = (3,4))
layer_i_emb = Embedding(output_dim = EMBEDDING_DIM,
input_dim = 6 + 1,
input_length = (3,4))(layer_i_inp)
layer_i_reshape = Reshape([3,4, EMBEDDING_DIM])(layer_i_emb)
layer_i_reshape = Flatten()(layer_i_reshape)
output = Dense(targets_train.shape[1], activation = 'sigmoid')(layer_i_reshape)
Хочу изменить его так попробовать выводы эмбединга сделать так же массивами одиночными и чтоб lstm слой их принял:
layer_inp = Input(shape = (3,4))
layer_emb_1 = Embedding(output_dim = EMBEDDING_DIM,
input_dim = 6 + 1,
input_length = (4))(layer_inp[:, 0, :])
layer_emb_2 = Embedding(output_dim = EMBEDDING_DIM,
input_dim = 6 + 1,
input_length = (4))(layer_inp[:, 1, :])
layer_emb_3 = Embedding(output_dim = EMBEDDING_DIM,
input_dim = 6 + 1,
input_length = (4))(layer_inp[:, 2, :])
layer_con = LSTM(MAX_FEATURES)([layer_emb_1, layer_emb_2, layer_emb_3])
layer_reshape = Flatten()(layer_i_reshape)
output = Dense(targets_train.shape[1], activation = 'sigmoid')(layer_reshape)
меняю характеристики, пытаюсь заатачить. не получается и мало работал с tf матрицами внутри модели А отдельно массив подобной формы просто принимает LSTM, значит наверно и после эмбединга как то возможно скомпоновать так данные. вот это тоже например работает
layer_f_inp = Input(shape = (3,168), name = 'feature')
layer_f_emb = LSTM(MAX_FEATURES*32, return_sequences = True)(layer_f_inp)
layer_f_emb = LSTM(MAX_FEATURES*32, return_sequences = True)(layer_f_emb)
layer_f_emb = LSTM(MAX_FEATURES*32)(layer_f_emb)