OperatorNotAllowedInGraphError:在图形执行过程中,不允许将tf.Tensor作为Python bool使用]

问题描述 投票:0回答:1
我正在尝试执行这些功能

def evaluate(sentence): sentence = preprocess_sentence(sentence) sentence = tf.expand_dims( START_TOKEN + tokenizer.encode(sentence) + END_TOKEN, axis=0) output = tf.expand_dims(START_TOKEN, 0) for i in range(MAX_LENGTH): predictions = model(inputs=[sentence, output], training=False) # select the last word from the seq_len dimension predictions = predictions[:, -1:, :] predicted_id = tf.cast(tf.argmax(predictions, axis=-1), tf.int32) # return the result if the predicted_id is equal to the end token if tf.equal(predicted_id, END_TOKEN[0]): break #check() #tf.cond(tf.equal(predicted_id, END_TOKEN[0]),true_fn=break,false_fn=lambda: tf.no_op()) # concatenated the predicted_id to the output which is given to the decoder # as its input. output = tf.concat([output, predicted_id], axis=-1) return tf.squeeze(output, axis=0) def predict(sentence): prediction = evaluate(sentence) predicted_sentence = tokenizer.decode( [i for i in prediction if i < tokenizer.vocab_size]) print('Input: {}'.format(sentence)) print('Output: {}'.format(predicted_sentence)) return predicted_sentence

但是,我遇到以下错误:OperatorNotAllowedInGraphError: using a `tf.Tensor` as a Python `bool` is not allowed in Graph execution. Use Eager execution or decorate this function with @tf.function.我确实知道我必须以tf.cond()的形式重写if条件。但是,我不知道如何在张量流中写入break,我也不知道是哪种情况导致了问题,因为此笔记本中的相同功能是否正常工作?https://colab.research.google.com/github/tensorflow/examples/blob/master/community/en/transformer_chatbot.ipynb#scrollTo=_NURhwYz5AXa有帮助吗?

我正在尝试执行这些函数def评估(句子):句子= preprocess_sentence(句子)句子= tf.expand_dims(START_TOKEN + tokenizer.encode(句子)+ END_TOKEN,axis = ...

python tensorflow break
1个回答
0
投票
笔记本中的代码有效,因为它使用的是TF 2.0,默认情况下它启用了急切执行功能。您可以使用tf.enable_eager_execution在旧版本中将其打开。
© www.soinside.com 2019 - 2024. All rights reserved.