Cet article montre comment convertir un modèle créé avec tensorflow dans un format pouvant être utilisé avec Tnesorflow.js.
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.
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.)
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")
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
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.
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