Обратитесь к этому сообщению, чтобы узнать предысторию проблемы: Реализует ли метод TensorFlow embedding_attention_seq2seq двунаправленный кодировщик RNN по умолчанию?
Я работаю над той же моделью и хочу заменить однонаправленный слой LSTM двунаправленным слоем. Я понимаю, что мне нужно использовать static_bidirectional_rnn вместо static_rnn, но я получаю сообщение об ошибке из-за некоторого несоответствия в форме тензора.
Я заменил следующую строку:
encoder_outputs, encoder_state = core_rnn.static_rnn(encoder_cell, encoder_inputs, dtype=dtype)
со строкой ниже:
encoder_outputs, encoder_state_fw, encoder_state_bw = core_rnn.static_bidirectional_rnn(encoder_cell, encoder_cell, encoder_inputs, dtype=dtype)
Это дает мне следующую ошибку:
InvalidArgumentError (см. Выше для трассировки): Несовместимые формы: [32,5,1,256] vs. [16,1,1,256] [[Узел: gradient / model_with_buckets / embedding_attention_seq2seq / embedding_attention_decoder / Внимание_decoder / Attention_0 / add_radientAradientArt = = DT_INT32, _device = "/ job: localhost / replica: 0 / task: 0 / cpu: 0"] (градиенты / model_with_buckets / embedding_attention_seq2seq / embedding_attention_decoder / Внимание_decoder / Attention_0 / add_grad / Shape, gradient_decoder_decoder / embder_battention_decoder / embder_battention_buckets / embder_buckets / Attention_0 / add_grad / Shape_1)]]
Я понимаю, что результаты обоих методов различаются, но я не знаю, как изменить код внимания, чтобы включить это. Как отправить в модуль внимания и прямое, и обратное состояние - объединить ли скрытые состояния?