Я хотел бы использовать слой Embedding до подачи моих входных данных в сеть LSTM, которую я пытаюсь создать. Вот соответствующая часть кода:
input_step1 = Input(shape=(SEQ_LENGTH_STEP1, NR_FEATURES_STEP1),
name='input_step1')
step1_lstm = CuDNNLSTM(50,
return_sequences=True,
return_state = True,
name="step1_lstm")
out_step1, state_h_step1, state_c_step1 = step1_lstm(input_step1)
Я немного запуталсяотносительно того, как я должен добавить слой Embedding здесь ..
Вот описание слоя Embedding из документации:
keras.layers.Embedding(input_dim,
output_dim,
embeddings_initializer='uniform',
embeddings_regularizer=None,
activity_regularizer=None,
embeddings_constraint=None,
mask_zero=False,
input_length=None)
Запутанная часть состоит в том, что мой определенный Input
имеет длину последовательности и количество определенных функций.Пишем это здесь снова:
input_step1 = Input(shape=(SEQ_LENGTH_STEP1, NR_FEATURES_STEP1),
name='input_step1')
При определении слоя Embedded, я довольно смущен тем, какие параметры функции Embedding
соответствуют «числу последовательностей» и «количеству объектов в каждом временном шаге»,Кто-нибудь может подсказать мне, как я могу интегрировать слой Embedding в мой код выше?
ADDENDUM:
Если я попробую следующее:
SEQ_LENGTH_STEP1 = 5
NR_FEATURES_STEP1 = 10
input_step1 = Input(shape=(SEQ_LENGTH_STEP1, NR_FEATURES_STEP1),
name='input_step1')
emb = Embedding(input_dim=NR_FEATURES_STEP1,
output_dim=15,
input_length=NR_FEATURES_STEP1)
input_step1_emb = emb(input_step1)
step1_lstm = CuDNNLSTM(50,
return_sequences=True,
return_state = True,
name="step1_lstm")
out_step1, state_h_step1, state_c_step1 = step1_lstm(input_step1_emb)
Я получаю следующую ошибку:
ValueError: Input 0 of layer step1_lstm is incompatible with the layer:
expected ndim=3, found ndim=4. Full shape received: [None, 5, 10, 15]
Я явно не правильно делаю .. Есть ли способ интегрировать Embedding
в сеть LSTM, которую я пытаюсь попробовать?