Маскировка в Керасе (без использования последовательной модели) Декодер BLSTM Encoder - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь замаскировать мой дополненный (с нулями) вход, который имеет размерность (сэмплы, временные шаги, особенности), то есть в моем случае (500 128 200), в модель кодировщика LSTM. Я хочу, чтобы модель поняла, что они дополнены и не должны рассматриваться. Ниже приведен мой код: -

encoder_inputs = Input(shape=(None, num_encoder_tokens))
x = layers.Embedding(input_dim=128, output_dim=200, mask_zero=True)(encoder_inputs)
encoder = Bidirectional(LSTM(latent_dim, return_state=True,input_shape=(timesteps, features)))(x)
encoder_outputs, f_hidden_state, f_cell_state, b_hidden_state, b_cell_state = encoder(encoder_inputs)

Я получаю сообщение о том, что

ввод 0 несовместим со слоем двунаправленной_4: ожидается, что ndim = 3, найдено ndim = 4

РЕДАКТИРОВАТЬ: - Я избавился от ошибки, введя слегка измененный способ (но теперь у меня новая ошибка). Ниже приведен новый код с ошибкой: -

encoder_inputs = Input(shape=(None, num_encoder_tokens))
masking = layers.Masking(mask_value=0.0)(encoder_inputs)
encoder = Bidirectional(LSTM(latent_dim, return_state=True,input_shape=(timesteps, features)))(masking)
encoder_outputs, f_hidden_state, f_cell_state,b_hidden_state, b_cell_state = encoder(encoder_inputs)

Я получаю эту ошибку для последней строки в приведенном выше коде: -

объект 'list' не вызывается

...