4
votes

Erreur TensorflowJS TFJS: le type de dict

J'avais essayé d'exécuter https://glitch.com/~tar-understood-exoplanet et le modèle échouerait à se charger et je ne pourrais pas utiliser activer la webcam.

Quelqu'un a eu le même problème?

Pendant que le programme est en cours d'exécution, dans la console, j'obtiens ce qui suit:

<script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/coco-ssd@2.0.2"></script>

J'ai un Macbook Pro et d'autres personnes sous Windows ont également eu des problèmes avec le modèle. Nous l'avons également essayé sur différents navigateurs, Safari et Chrome.

SUCCÈS! après le passage à coco-ssd 2.0.2:

J'ai ajouté la version 2.0.2 à la ligne 62 comme suit:

tfjs:2 Uncaught (in promise) Error: The dtype of dict['image_tensor'] provided in model.execute(dict) must be int32, but was float32
    at Object.b [as assert] (tfjs:2)
    at tfjs:2
    at Array.forEach (<anonymous>)
    at t.checkInputShapeAndType (tfjs:2)
    at t.<anonymous> (tfjs:2)
    at tfjs:2
    at Object.next (tfjs:2)
    at tfjs:2
    at new Promise (<anonymous>)
    at Zv (tfjs:2)


2 commentaires

Merci d'avoir signalé cela Claire - Je demanderai si l'un des membres de l'équipe connaît la réponse lundi!


Pour Chrome, cela pourrait être dû au fait qu'ils ont déployé une politique de cookies SameSite le 04/04 à l'origine du problème.


3 Réponses :


3
votes

Même erreur ici, qui vient de se produire depuis vendredi soir (04/03/2020) TFModel fonctionne bien ces dernières semaines.


0 commentaires

3
votes

Ceci est causé par le préchauffage de coco-ssd qui utilise le tenseur tf.zeros. Le dtype par défaut pour tf.zeros est «float» dans la version récente de TFJS. J'ai sorti une nouvelle version avec des correctifs. Cela devrait fonctionner si vous utilisez la dernière version de coco-ssd (2.0.2) dans l'exemple de glitch (index.html) comme suit.

    <!-- Load the coco-ssd model to use to recognize things in images -->
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/coco-ssd@2.0.2"></script>


2 commentaires

Voir ci-dessus s'il vous plaît!


Le code de chargement du modèle est commenté dans le fichier index.js (ligne 36-41) L'erreur ne semble pas pertinente pour TensorFlow.js



0
votes

J'ai eu la même erreur.

Mon Scenerio : J'ai formé un modèle pré-entraîné à partir du zoo de modèles tensorflow en utilisant l'apprentissage par transfert à l'aide de l'api tensorflow en tant que modèle enregistré (fichier model.pb) et je l'ai converti au format tfjs (model.json et fichiers .bin partagés).

Lorsque j'ai essayé d'exécuter ce model.json sur le javascript (web), cela donne l'erreur ci-dessous:

Uncaught (in promise) Error: The dtype of dict['input_tensor'] provided in model.execute(dict) must be int32, but was float32

Lorsque j'ai essayé le modèle converti de travail de quelqu'un d'autre (model.json et fichiers .bin partagés) sur mon javascript (web), cela a fonctionné.

Conclusion : il y a un problème avec mon modèle converti. Je l'ai converti en utilisant tensorflowjs_converter. Mon modèle original dans (model.pb) fonctionne également avec précision en python.

J'essaie toujours de convertir mon fichier model.pb avec différents tensorflowjs_converters, car il semble être le problème de la gestion des versions des convertisseurs.


1 commentaires

Vous pouvez convertir des tenseurs dtype en utilisant .toInt() ou selon les besoins dans mon cas .toFloat() js.tensorflow.org/api/1.0.0/#tf.Tensor.toInt