Nlp 在基于LSTM的编码器上应用双向包装时出错

Nlp 在基于LSTM的编码器上应用双向包装时出错,nlp,lstm,chatbot,attention-model,encoder-decoder,Nlp,Lstm,Chatbot,Attention Model,Encoder Decoder,我已经写了一个自定义编码器。我是第一次使用双向LSTM包装器,可能在这样做时犯了一个错误。编译模型时,我收到一个CUDDN\u STATUS\u BAD\u PARAM错误。如果能帮助我解决这个错误,我将不胜感激。实际上,我希望使用双向LSTM的输出(以及隐藏和单元状态)作为解码器的输入。我哪里出错了 class Encoder(tf.keras.Model): def __init__(self,inp_vocab_size,embedding_size,lstm_size,

我已经写了一个自定义编码器。我是第一次使用双向LSTM包装器,可能在这样做时犯了一个错误。编译模型时,我收到一个
CUDDN\u STATUS\u BAD\u PARAM
错误。如果能帮助我解决这个错误,我将不胜感激。实际上,我希望使用双向LSTM的输出(以及隐藏和单元状态)作为解码器的输入。我哪里出错了

class Encoder(tf.keras.Model):
    
    def __init__(self,inp_vocab_size,embedding_size,lstm_size,input_length):

        super().__init__()
        self.inp_vocab_size = inp_vocab_size
        self.embedding_size = embedding_size
        self.input_length = input_length
        self.lstm_size = lstm_size
        self.lstm_output = 0
        self.lstm_state_h = 0
        self.lstm_state_c = 0
        self.embedding = Embedding(input_dim=self.inp_vocab_size, output_dim=self.embedding_size, input_length=self.input_length,
                           mask_zero=True, name="embedding_layer_encoder", weights=[embedding_matrix_questions], trainable=False)
        self.concatenate = Concatenate()
    
    def build(self, input_shape):
        self.forward_layer = LSTM(self.lstm_size, return_state=True, return_sequences=True, go_backwards=False, name="Encoder_LSTM_forward")
        self.backward_layer = LSTM(self.lstm_size, return_state=True, return_sequences=True, go_backwards=True, name="Encoder_LSTM_backward")
        self.bidirectional = tf.keras.layers.Bidirectional(self.forward_layer, backward_layer=self.backward_layer, merge_mode = "sum")
        

    def call(self,input_sequence,states):
        
        input_embedding = self.embedding(input_sequence)
        bidirectional_lstm_output, forward_h, forward_c, backward_h, backward_c = self.bidirectional(input_embedding)
        state_h = self.concatenate([forward_h, backward_h])
        state_c = self.concatenate([forward_c, backward_c])
        print(bidirection_lstm_output.shape)
        print(state_h.shape)
        print(state_c.shape)
        return bidirectional_lstm_output, state_h, state_c
      

    
    def initialize_states(self,batch_size):
      
      h_state_init = np.zeros((batch_size,self.lstm_size))
      c_state_init = np.zeros((batch_size,self.lstm_size))
      return h_state_init, c_state_init