2 votes

Détection de l'écriture manuscrite avec keras : utiliser un `tf.Tensor` comme un `bool` Python n'est pas autorisé dans l'exécution du graphique

J'ai essayé d'exécuter un exemple de code (hébergé sur keras.io) concernant la tâche de reconnaissance de l'écriture manuscrite. En jouant avec le code, j'ai rencontré un problème lié à TensorFlow. Veuillez voir l'extrait de code correspondant ci-dessous.

def preprocess_image(image_path, img_size=(image_width, image_height)):
    image = tf.io.read_file(image_path)
    image = tf.image.decode_png(image, 1)
    image = distortion_free_resize(image, img_size)
    image = tf.cast(image, tf.float32) / 255.0
    return image

def vectorize_label(label):
    label = char_to_num(tf.strings.unicode_split(label, input_encoding="UTF-8"))
    length = tf.shape(label)[0]
    pad_amount = max_len - length
    label = tf.pad(label, paddings=[[0, pad_amount]], constant_values=padding_token)
    return label

def process_images_labels(image_path, label):
    image = preprocess_image(image_path)
    label = vectorize_label(label)
    return {"image": image, "label": label}

def prepare_dataset(image_paths, labels):
    dataset = tf.data.Dataset.from_tensor_slices((image_paths, labels)).map(
        process_images_labels, num_parallel_calls=AUTOTUNE
    )
    return dataset.batch(batch_size).cache().prefetch(AUTOTUNE)

train_ds = prepare_dataset(train_img_paths, train_labels_cleaned)
validation_ds = prepare_dataset(validation_img_paths, validation_labels_cleaned)
test_ds = prepare_dataset(test_img_paths, test_labels_cleaned)
  1. Voici le code de Reconnaissance de l'écriture manuscrite et lorsque j'ajoute les 3 dernières lignes, j'obtiens cette erreur :

OperatorNotAllowedInGraphError : l'utilisation d'une tf.Tensor comme un Python bool n'est pas autorisé dans l'exécution du graphique. Utilisez l'exécution Eager ou décorez cette fonction avec @tf.function.

  1. J'ai vu certaines des solutions sur stack-overflow mais je n'ai pas réussi à les faire fonctionner. ( Certains ont dit que je devrais rétrograder mon tensorflow à 1x mais je veux utiliser 2x).

Merci !

1voto

Ali Points 41

Le problème vient de TensorFlow et il peut être résolu en mettant simplement à jour TensorFlow à la dernière version. Il est également recommandé d'utiliser python 3.5 à 3.8 avec TensorFlow. lien utile : Installation de TensorFlow

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X