[PYTHON] [Tensorflowjs_converter] Comment convertir le modèle Tensorflow au format Tensorflow.js

Cet article montre comment convertir un modèle créé avec tensorflow dans un format pouvant être utilisé avec Tnesorflow.js.

environnement python

pip install tensorflowjs

tfjs-converter

Tensorflow.js (TF.js) peut réutiliser des modèles existants entraînés par Tensorflow (TF). tfjs-converter est un outil en ligne de commande pour la conversion de modèles TensorFlow et prend en charge divers formats tels que HDF5.

tensorflowjs_converter --help
usage: TensorFlow.js model converters. [-h]
                                       [--input_format {tensorflowjs,keras,tf_hub,keras_saved_model,tf_saved_model,tfjs_layers_model}]
                                      [--output_format {tfjs_graph_model,tfjs_layers_model,tensorflowjs,keras}]
                                       [--signature_name SIGNATURE_NAME]
                                       [--saved_model_tags SAVED_MODEL_TAGS]
                                       [--quantization_bytes {1,2}]
                                       [--split_weights_by_layer] [--version]
                                       [--skip_op_check SKIP_OP_CHECK]
                                       [--strip_debug_ops STRIP_DEBUG_OPS]
                                       [--weight_shard_size_bytes WEIGHT_SHARD_SIZE_BYTES]
                                       [input_path] [output_path]

Vous pouvez convertir le modèle enregistré de TF en un format Web qui peut être lu par TF.js avec la commande suivante.

tensorflowjs_converter \
    --input_format=tf_saved_model \
    /path/to/saved_model \
    /path/to/web_model

Pour --input_format, d'autres formats tels que keras, keras_saved_model et tf_hub peuvent être sélectionnés.

format portable

Il peut être réutilisé dans un emplacement différent de celui où le modèle est entraîné. la caractéristique est,

Les fichiers générés par Tensorflow sont basés sur le tampon de protocole. Par conséquent, il s'agit d'un format lisible dans de nombreux langages de programmation. En outre, des formats tels que ONNX sont également des formats indépendants de la plate-forme. (Peut également être utilisé avec pytorch etc.)

Enregistrer le modèle

Comment enregistrer un modèle dans Tensorflow (Python).

mport tensorflow as tf
from tensorflow import keras

print(tf.__version__) #2.1

(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()

train_labels = train_labels[:1000]
test_labels = test_labels[:1000]

train_images = train_images[:1000].reshape(-1, 28 * 28) / 255.0
test_images = test_images[:1000].reshape(-1, 28 * 28) / 255.0

#Une fonction qui renvoie un court modèle séquentiel
def create_model():
  model = tf.keras.models.Sequential([
    keras.layers.Dense(512, activation='relu', input_shape=(784,)),
    keras.layers.Dropout(0.2),
    keras.layers.Dense(10, activation='softmax')
  ])
  
  model.compile(optimizer='adam', 
                loss='sparse_categorical_crossentropy',
                metrics=['accuracy'])
  
  return model

#Créer une instance du modèle de base
model = create_model()
model.summary()

model.fit(train_images, train_labels, epochs=5)

#Enregistrez le modèle entier dans un fichier HDF5.
model.save('my_model.h5')
tf.saved_model.save(model, "./sample/model_data")
#imported = tf.saved_model.load("./sample/model_data")

Conversion de modèle

Convertissez le modèle TF enregistré au format ./sample/model_data en modèle au format TF.js.

tensorflowjs_converter --input_format=tf_saved_model --output_node_names=output ./sample/model_data ./sample/model_tfjs_model

#format de données hd5
tensorflowjs_converter --input_format keras my_model.h5 ./sample/hd5_model

#tf-Utiliser le modèle de hub
tensorflowjs_converter \
    --input_format=tf_hub \
    'https://tfhub.dev/google/imagenet/mobilenet_v1_100_224/classification/1' \
    ./my_tfjs_model

Qu'est-ce que TF-hub?

Tensorflow Hub est une bibliothèque qui peut réutiliser des modèles d'apprentissage automatique, etc. Vous pouvez utiliser une technologie d'apprentissage automatique de pointe en chargeant le modèle et en faisant correspondre les formats d'entrée et de sortie.

Chargement du modèle

Comment charger un modèle avec Tensorflow.js.

import * as tf from '@tensorflow/tfjs';

const MODEL_URL = 'https://path/to/model.json';
const model = await tf.loadGraphModel(MODEL_URL);

// Or

const MODEL_PATH = 'file://path/to/model.json';
const model = await tf.loadGraphModel(MODEL_PATH);

Recommended Posts

[Tensorflowjs_converter] Comment convertir le modèle Tensorflow au format Tensorflow.js
Comment convertir le modèle Tensorflow en Lite
Comment convertir facilement le format de Markdown
Comment convertir des fichiers Json au format CSV ou au format EXCEL
Comment convertir 0,5 en 1056964608 en un seul coup
Comment installer TensorFlow sur CentOS 7
Comment convertir .mgz en .nii.gz
Comment exécuter du code TensorFlow 1.0 en 2.0
[Python] Comment convertir un fichier db en csv
Convertir les données au format XML en données au format txt (yolov3)
[Python] Comment convertir une liste bidimensionnelle en liste unidimensionnelle
Comment convertir csv en tsv dans la CLI
Comment convertir Python en fichier exe
Convertir le graphique matplotlib au format de fichier emf
Convertir un PDF joint en courrier électronique au format texte
Comment utiliser Tensorflow dans un environnement Docker
Convertir le type de date Python au format RFC822
[Python --open3d] Comment convertir des données d'obj de modèle 3D en nuage de points
Comment convertir M4a acquis par iTunes en wav
[Python] Comment changer le format de la date (format d'affichage)
Comment exécuter CNN en notation système 1 avec Tensorflow 2
[Introduction à Python] Comment gérer les données au format JSON
Convertir les données au format json en txt (en utilisant yolo)
Tensorufuro, Tensafuro Après tout, lequel (Comment lire Tensorflow)
Comment convertir (32,32,3) en tenseur à 4 dimensions (1,32,32,1) avec le type ndarray
[TF] Comment créer Tensorflow dans un environnement Proxy
[PyTorch] Exemple ⑧ ~ Comment créer un modèle complexe ~
Apprenez à gonfler des images à partir du code TensorFlow
Convertir les packages binaires pour Windows au format roue
Comment forcer TensorFlow 2.3.0 à construire pour CUDA11 + cuDNN8
Convertir une chaîne au format de liste caractère par caractère avec python
Convertir en HSV
Comment convertir / restaurer une chaîne avec [] en python
Comment obtenir plusieurs objets de modèle au hasard dans Django
Comment convertir le type Python # pour les super débutants de Python: str
Comment utiliser Keras ~ De la simple génération de modèle à CNN ~
Comment convertir des données détenues horizontalement en données détenues verticalement avec des pandas
Comment convertir un objet de classe en dictionnaire avec SQLAlchemy
La décision de scikit-learn Comment visualiser un modèle en bois
Convertir les articles Qiita au format de publication Jekyll pour la sauvegarde
Pour utiliser TensorFlow sur des GPU inférieurs à Titan
Comment partager des dossiers avec Docker et Windows avec tensorflow
Comment convertir des nombres à virgule flottante en nombres binaires en Python
J'ai créé un code pour convertir illustration2vec en modèle Keras
Comment convertir un fichier JSON en fichier CSV avec Python Pandas
Comment convertir un spectrogramme Mel en un fichier wav
Convertir / renvoyer des objets de classe au format JSON en Python
Comment créer un environnement de développement pour TensorFlow (1.0.0) (Mac)
Comment utiliser le modèle appris dans Lobe en Python
python, php, ruby Comment convertir un décimal en n
Convertir le fichier de ressources de traduction (.po) au format XLIFF (.xlf)
Convertir le fichier XML au format Pascal VOC en fichier json au format COCO
[Comment!] Apprenez et jouez à Super Mario avec Tensorflow !!
Comment utiliser le modèle japonais Spacy avec Google Colaboratory
[TF] Comment enregistrer et charger les paramètres d'entraînement Tensorflow