J'utilise @tensorflow-models/knn-classifier pour classer mes modèles et @tensorflow-models/mobilenet pour étudier de nouveaux modèles.

methods: {
    async init() {
      // load the load mobilenet and create a KnnClassifier
      this.classifier = knnClassifier.create();
      this.mobilenet = await mobilenetModule.load();
    },
    async addExample() {
      let selected = document.getElementById("options");
      this.class = selected.options[selected.selectedIndex].value;

      const img = tf.browser.fromPixels(this.$children[0].webcam.webcamElement);
      const logits = this.mobilenet.infer(img, "conv_preds");

      this.classifier.addExample(logits, parseInt(this.class));
    } 

Comment puis-je enregistrer dans localStorage mes exemples, que j'ai ajoutés au classificateur, puis les charger dans la méthode init() ? Car actuellement, je perds tous mes modèles après le rafraîchissement de la page.

Désolé peut-être pour la mauvaise terminologie, je suis tellement nouveau dans Tensorflow js.

-1
Vladimir Humeniuk 22 janv. 2020 à 11:58

1 réponse

Meilleure réponse

Ainsi, après de petites recherches, j'ai réussi à enregistrer et à charger des données avec les méthodes suivantes :

    async toDatasetObject(dataset) {
      const result = await Promise.all(
        Object.entries(dataset).map(async ([classId, value]) => {
          const data = await value.data();

          return {
            label: Number(classId),
            data: Array.from(data),
            shape: value.shape
          };
        })
      );

      return result;
    },
    fromDatasetObject(datasetObject) {
      return Object.entries(datasetObject).reduce(
        (result, [indexString, { data, shape }]) => {
          const tensor = tf.tensor2d(data, shape);
          const index = Number(indexString);

          result[index] = tensor;

          return result;
        },
        {}
      );
    },

Et puis je le charge simplement :

this.classifier.setClassifierDataset(
   this.fromDatasetObject(JSON.parse(localStorage.getItem("my-data")))
);
1
Vladimir Humeniuk 22 janv. 2020 à 09:47