NMT , объект «KerasTensor» не может быть вызван»

Здесь я делюсь фрагментом кода для обучения модели Encoder_Decoder для машинного перевода. При использовании слоя Embedding (обученного ранее) в режиме вывода (на test_data). Выдало следующую ошибку --->

      # Encoder
encoder_inputs = Input(shape=(None ,))
enc_emb =  Embedding(eng_vocab_size, latent_dim, mask_zero = True)(encoder_inputs)
encoder_lstm = LSTM(latent_dim, return_state=True)
encoder_outputs, state_h, state_c = encoder_lstm(enc_emb)

# We discard `encoder_outputs` and only keep the states.

encoder_states = [state_h, state_c]

# Set up the decoder, using `encoder_states` as initial state.
decoder_inputs = Input(shape=(None,))
dec_emb = Embedding(deu_vocab_size, latent_dim, mask_zero = True)(decoder_inputs)


# decoder return full output sequences, and internal states as well. 
# We don't use the return states in the training model,
# but we will use them in inference.
decoder_lstm = LSTM(latent_dim, return_sequences=True, return_state=True)
decoder_outputs, _, _ = decoder_lstm(dec_emb,
                                     initial_state=encoder_states)
decoder_dense = Dense(deu_vocab_size, activation='softmax')
decoder_outputs = decoder_dense(decoder_outputs)

# Define the model that will turn
# `encoder_input_data` & `decoder_input_data` into `decoder_target_data`
model = Model([encoder_inputs, decoder_inputs], decoder_outputs)

# Compile the model
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['acc'])

# Encode the input sequence to get the "thought vectors"
encoder_model = Model(encoder_inputs, encoder_states)

# Decoder setup
# Below tensors will hold the states of the previous time step
decoder_state_input_h = Input(shape=(latent_dim,))
decoder_state_input_c = Input(shape=(latent_dim,))
decoder_states_inputs = [decoder_state_input_h, decoder_state_input_c]

dec_emb2= dec_emb(decoder_inputs)      #  reusing embedding layer

decoder_outputs2, state_h2, state_c2 = decoder_lstm(dec_emb2, initial_state=decoder_states_inputs)   # reusing lstm layer
decoder_outputs2 = decoder_dense(decoder_outputs2) # softmax_layer to generate prob_dist. over target vocab

# Final decoder model
decoder_model = Model(
    [decoder_inputs] + decoder_states_inputs,
    [decoder_outputs2] )

ОШИБКА

8 decoder_states_inputs = [decoder_state_input_h, decoder_state_input_c]

---> 10 dec_emb2= dec_emb(decoder_inputs) # повторное использование уровня внедрения 11

12 decoder_outputs2, state_h2, state_c2 = decoder_lstm(dec_emb2, initial_state=decoder_states_inputs) # повторное использование слоя lstm

TypeError: объект «KerasTensor» не может быть вызван, введите здесь описание изображения

Я прочитал различные решения, доступные для этой проблемы, но не мог понять, о каких двух режимах модели они говорили и что их решение эффективно делало.

Пожалуйста, объясните подробно. заранее спасибо

0 ответов

Другие вопросы по тегам