Dieser Artikel zeigt, wie ein mit Tensorflow erstelltes Modell in ein Format konvertiert wird, das mit Tnesorflow.js verwendet werden kann.
pip install tensorflowjs
tfjs-converter
Tensorflow.js (TF.js) kann vorhandene Modelle, die von Tensorflow (TF) trainiert wurden, wiederverwenden. tfjs-converter ist ein Befehlszeilenprogramm zum Konvertieren von TensorFlow-Modellen und unterstützt verschiedene Formate wie 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]
Sie können das gespeicherte Modell von TF in ein Webformat konvertieren, das von TF.js mit dem folgenden Befehl gelesen werden kann.
tensorflowjs_converter \
--input_format=tf_saved_model \
/path/to/saved_model \
/path/to/web_model
Für --input_format können andere Formate wie keras, keras_saved_model und tf_hub ausgewählt werden.
Es kann an einem anderen Ort als dem Ort, an dem das Modell trainiert wird, wiederverwendet werden. Merkmal ist,
Die von Tensorflow generierten Dateien basieren auf dem Protokollpuffer. Daher ist es in vielen Programmiersprachen ein lesbares Format. Darüber hinaus sind Formate wie ONNX auch plattformunabhängige Formate. (Kann auch mit Pytorch usw. verwendet werden)
So speichern Sie ein Modell in 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
#Eine Funktion, die ein kurzes sequentielles Modell zurückgibt
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
#Erstellen Sie eine Instanz des Grundmodells
model = create_model()
model.summary()
model.fit(train_images, train_labels, epochs=5)
#Speichern Sie das gesamte Modell in einer HDF5-Datei.
model.save('my_model.h5')
tf.saved_model.save(model, "./sample/model_data")
#imported = tf.saved_model.load("./sample/model_data")
Konvertieren Sie das in ./sample/model_data gespeicherte TF-Modell in ein Modell im TF.js-Format.
tensorflowjs_converter --input_format=tf_saved_model --output_node_names=output ./sample/model_data ./sample/model_tfjs_model
#HD5-Datenformat
tensorflowjs_converter --input_format keras my_model.h5 ./sample/hd5_model
#tf-Verwenden Sie das Hub-Modell
tensorflowjs_converter \
--input_format=tf_hub \
'https://tfhub.dev/google/imagenet/mobilenet_v1_100_224/classification/1' \
./my_tfjs_model
Tensorflow Hub ist eine Bibliothek, die Modelle für maschinelles Lernen usw. wiederverwenden kann. Sie können modernste Technologie für maschinelles Lernen verwenden, indem Sie das Modell laden und die Eingabe- und Ausgabeformate anpassen.
So laden Sie ein Modell mit 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