![]() | ![]() | ![]() | ![]() |
SavedModel, eğitimli parametreler (yani, tf.Variable
s) ve hesaplama dahil olmak üzere eksiksiz bir TensorFlow programı içerir. Orijinal model oluşturma kodunun çalıştırılmasını gerektirmez, bu da onu TFLite , TensorFlow.js , TensorFlow Serving veya TensorFlow Hub ile paylaşmak veya dağıtmak için yararlı kılar.
Aşağıdaki API'leri kullanarak SavedModel biçiminde bir model kaydedebilir ve yükleyebilirsiniz:
- Düşük seviyeli
tf.saved_model
API. Bu belge, bu API'nin nasıl kullanılacağını ayrıntılı olarak açıklamaktadır.- Kaydet:
tf.saved_model.save(model, path_to_dir)
- Yük:
model = tf.saved_model.load(path_to_dir)
- Kaydet:
- Yüksek seviyeli
tf.keras.Model
API. Keras kaydetme ve serileştirme kılavuzuna bakın . - Egzersiz sırasında sadece ağırlıkları kaydetmek / yüklemek istiyorsanız , kontrol noktaları kılavuzuna bakın.
Keras'tan SavedModel Oluşturma
Hızlı bir giriş için, bu bölüm önceden eğitilmiş bir Keras modelini dışa aktarır ve onunla görüntü sınıflandırma taleplerini sunar. Kılavuzun geri kalanı ayrıntıları dolduracak ve SavedModels oluşturmanın diğer yollarını tartışacaktır.
import os
import tempfile
from matplotlib import pyplot as plt
import numpy as np
import tensorflow as tf
tmpdir = tempfile.mkdtemp()
physical_devices = tf.config.list_physical_devices('GPU')
for device in physical_devices:
tf.config.experimental.set_memory_growth(device, True)
file = tf.keras.utils.get_file(
"grace_hopper.jpg",
"https://storage.googleapis.com/download.tensorflow.org/example_images/grace_hopper.jpg")
img = tf.keras.preprocessing.image.load_img(file, target_size=[224, 224])
plt.imshow(img)
plt.axis('off')
x = tf.keras.preprocessing.image.img_to_array(img)
x = tf.keras.applications.mobilenet.preprocess_input(
x[tf.newaxis,...])
Downloading data from https://storage.googleapis.com/download.tensorflow.org/example_images/grace_hopper.jpg 65536/61306 [================================] - 0s 0us/step
Çalışan bir örnek olarak Grace Hopper'ın bir görüntüsünü ve kullanımı kolay olduğu için Keras önceden eğitilmiş bir görüntü sınıflandırma modelini kullanacaksınız. Özel modeller de işe yarar ve daha sonra ayrıntılı olarak ele alınacaktır.
labels_path = tf.keras.utils.get_file(
'ImageNetLabels.txt',
'https://storage.googleapis.com/download.tensorflow.org/data/ImageNetLabels.txt')
imagenet_labels = np.array(open(labels_path).read().splitlines())
Downloading data from https://storage.googleapis.com/download.tensorflow.org/data/ImageNetLabels.txt 16384/10484 [==============================================] - 0s 0us/step
pretrained_model = tf.keras.applications.MobileNet()
result_before_save = pretrained_model(x)
decoded = imagenet_labels[np.argsort(result_before_save)[0,::-1][:5]+1]
print("Result before saving:\n", decoded)
Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/mobilenet/mobilenet_1_0_224_tf.h5 17227776/17225924 [==============================] - 0s 0us/step Result before saving: ['military uniform' 'bow tie' 'suit' 'bearskin' 'pickelhaube']
Bu imaj için en önemli tahmin "askeri üniforma".
mobilenet_save_path = os.path.join(tmpdir, "mobilenet/1/")
tf.saved_model.save(pretrained_model, mobilenet_save_path)
INFO:tensorflow:Assets written to: /tmp/tmpfcgkddlh/mobilenet/1/assets
Kaydetme yolu, TensorFlow Serving tarafından kullanılan ve son yol bileşeninin ( 1/
burada) modeliniz için bir sürüm numarası olduğu bir kuralı izler - Tensorflow Serving gibi araçların göreceli tazelik hakkında akıl yürütmesine olanak tanır.
SavedModel'i tf.saved_model.load ile Python'a geri tf.saved_model.load
ve Amiral Hopper'ın görüntüsünün nasıl sınıflandırıldığını görebilirsiniz.
loaded = tf.saved_model.load(mobilenet_save_path)
print(list(loaded.signatures.keys())) # ["serving_default"]
['serving_default']
İçe aktarılan imzalar her zaman sözlük döndürür. İmza adlarını ve çıktı sözlük anahtarlarını özelleştirmek için, bkz. Dışa aktarma sırasında imzaları belirtme .
infer = loaded.signatures["serving_default"]
print(infer.structured_outputs)
{'predictions': TensorSpec(shape=(None, 1000), dtype=tf.float32, name='predictions')}
SavedModel'den çıkarımı çalıştırmak, orijinal modelle aynı sonucu verir.
labeling = infer(tf.constant(x))[pretrained_model.output_names[0]]
decoded = imagenet_labels[np.argsort(labeling)[0,::-1][:5]+1]
print("Result after saving and loading:\n", decoded)
Result after saving and loading: ['military uniform' 'bow tie' 'suit' 'bearskin' 'pickelhaube']
TensorFlow Sunumunda SavedModel Çalıştırma
SavedModels, Python'dan kullanılabilir (daha fazlası aşağıdadır), ancak üretim ortamları genellikle Python kodunu çalıştırmadan çıkarım için özel bir hizmet kullanır. Bu, TensorFlow Sunumu kullanılarak bir SavedModel'den kolayca kurulabilir.
Uçtan uca tensorflow sunum örneği için TensorFlow Sunum REST eğiticisine bakın.
Diskteki SavedModel biçimi
SavedModel, serileştirilmiş imzaları ve bunları çalıştırmak için gereken durumu, değişken değerleri ve sözcükleri içeren bir dizindir.
ls {mobilenet_save_path}
assets saved_model.pb variables
saved_model.pb
dosyası, gerçek TensorFlow programını veya modelini ve her biri tensör girdilerini kabul eden ve tensör çıktıları üreten bir işlevi tanımlayan bir dizi adlandırılmış imzayı depolar.
SavedModels (çoklu modelin birden varyantlarını içerebilir v1.MetaGraphDefs
ile özdeşleşmiş, --tag_set
için bayrak saved_model_cli
), ancak bu nadirdir. Bir modelin birden çok varyantını oluşturan API'ler arasında tf.Estimator.experimental_export_all_saved_models
ve TensorFlow 1.x tf.saved_model.Builder
.
2021-02-11 02:25:22.757135: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.11.0 The given SavedModel MetaGraphDef contains SignatureDefs with the following keys: SignatureDef key: "__saved_model_init_op" SignatureDef key: "serving_default"
variables
dizini standart bir eğitim kontrol noktası içerir (eğitim kontrol noktaları kılavuzuna bakın).
ls {mobilenet_save_path}/variables
variables.data-00000-of-00001 variables.index
assets
dizini, kelime tablolarını başlatmak için kullanılan metin dosyaları gibi TensorFlow grafiği tarafından kullanılan dosyaları içerir. Bu örnekte kullanılmamaktadır.
SavedModels, TensorFlow grafiği tarafından kullanılmayan dosyalar için bir assets.extra
dizinine sahip olabilir, örneğin tüketiciler için SavedModel ile ne yapılacağı hakkında bilgiler. TensorFlow'un kendisi bu dizini kullanmaz.
Özel bir modeli kaydetme
tf.saved_model.save
, tf.Module
nesnelerini ve tf.keras.Layer
ve tf.keras.Model
gibi alt sınıflarını kaydetmeyi destekler.
Bir tf.Module
kaydetme ve geri yükleme tf.Module
.
class CustomModule(tf.Module):
def __init__(self):
super(CustomModule, self).__init__()
self.v = tf.Variable(1.)
@tf.function
def __call__(self, x):
print('Tracing with', x)
return x * self.v
@tf.function(input_signature=[tf.TensorSpec([], tf.float32)])
def mutate(self, new_v):
self.v.assign(new_v)
module = CustomModule()
Bir tf.Module
, tüm tf.Variable
öznitelikleri, tf.function
-decorated yöntemler ve özyinelemeli geçiş yoluyla bulunan tf.Module
ler kaydedilir. (Bu yinelemeli geçiş hakkında daha fazla bilgi için Kontrol Noktası eğitimine bakın.) Ancak, herhangi bir Python özelliği, işlevi ve veri kaybolur. Bu, bir tf.function
fonksiyonu kaydedildiğinde Python kodunun kaydedilmediği anlamına gelir.
Python kodu kaydedilmediyse, SavedModel işlevi nasıl geri yükleyeceğini nasıl biliyor?
Kısaca, tf.function
, bir ConcreteFunction ( tf.Graph
çevresinde çağrılabilir bir sarmalayıcı) oluşturmak için Python kodunu izleyerek çalışır. Bir tf.function
kaydederken, gerçekten tf.function
ConcreteFunctions önbelleğini tf.function
.
tf.function
ve ConcreteFunctions arasındaki ilişki hakkında daha fazla bilgi edinmek için tf.function kılavuzuna bakın .
module_no_signatures_path = os.path.join(tmpdir, 'module_no_signatures')
module(tf.constant(0.))
print('Saving model...')
tf.saved_model.save(module, module_no_signatures_path)
Tracing with Tensor("x:0", shape=(), dtype=float32) Saving model... Tracing with Tensor("x:0", shape=(), dtype=float32) INFO:tensorflow:Assets written to: /tmp/tmpfcgkddlh/module_no_signatures/assets
Özel bir model yükleme ve kullanma
Python'da bir SavedModel yüklediğinizde, tüm tf.Variable
öznitelikleri, tf.function
-decorated yöntemleri ve tf.Module
s, orijinal kaydedilmiş tf.Module
aynı nesne yapısında geri yüklenir.
imported = tf.saved_model.load(module_no_signatures_path)
assert imported(tf.constant(3.)).numpy() == 3
imported.mutate(tf.constant(2.))
assert imported(tf.constant(3.)).numpy() == 6
Python kodu kaydedilmediğinden, yeni bir giriş imzasıyla tf.function
çağırmak başarısız olur:
imported(tf.constant([3.]))
ValueError: Could not find matching function to call for canonicalized inputs ((,), {}). Only existing signatures are [((TensorSpec(shape=(), dtype=tf.float32, name=u'x'),), {})].
Temel ince ayar
Değişken nesneler mevcuttur ve içe aktarılan işlevler aracılığıyla geri dönüş yapabilirsiniz. Bu, basit durumlarda bir SavedModel'in ince ayarını yapmak (yani yeniden eğitmek) için yeterlidir.
optimizer = tf.optimizers.SGD(0.05)
def train_step():
with tf.GradientTape() as tape:
loss = (10. - imported(tf.constant(2.))) ** 2
variables = tape.watched_variables()
grads = tape.gradient(loss, variables)
optimizer.apply_gradients(zip(grads, variables))
return loss
for _ in range(10):
# "v" approaches 5, "loss" approaches 0
print("loss={:.2f} v={:.2f}".format(train_step(), imported.v.numpy()))
loss=36.00 v=3.20 loss=12.96 v=3.92 loss=4.67 v=4.35 loss=1.68 v=4.61 loss=0.60 v=4.77 loss=0.22 v=4.86 loss=0.08 v=4.92 loss=0.03 v=4.95 loss=0.01 v=4.97 loss=0.00 v=4.98
Genel ince ayar
Keras'tan bir SavedModel, daha gelişmiş ince ayar durumlarını ele __call__
için düz bir __call__
daha fazla ayrıntı sağlar. TensorFlow Hub, ince ayar amacıyla paylaşılan SavedModels'te, varsa aşağıdakilerin sağlanmasını önerir:
- Model bırakma veya ileri geçişin eğitim ve çıkarım arasında farklılık gösterdiği başka bir teknik (toplu normalleştirme gibi) kullanıyorsa,
__call__
yöntemi, varsayılan olarakFalse
ancakTrue
olarak ayarlanabilen isteğe bağlı, Python değerli birtraining=
bağımsız değişkenini alır. - Yanındaki
__call__
özniteliği vardır.variable
ve.trainable_variable
değişkenlerin gelen listeleri ile nitelikler. Başlangıçta eğitilebilir olan ancak ince ayar sırasında dondurulması amaçlanan bir değişken.trainable_variables
. - Ağırlık düzenleyicilerini katmanların veya alt modellerin öznitelikleri olarak temsil eden
.regularization_losses
gibi çerçeveler uğruna, bir.regularization_losses
özniteliği de olabilir. Değerleri toplam kayba ek olarak verilen sıfır bağımsız değişkenli işlevlerin bir listesini tutar.
İlk MobileNet örneğine geri dönersek, bunların bazılarının eylemde olduğunu görebilirsiniz:
loaded = tf.saved_model.load(mobilenet_save_path)
print("MobileNet has {} trainable variables: {}, ...".format(
len(loaded.trainable_variables),
", ".join([v.name for v in loaded.trainable_variables[:5]])))
MobileNet has 83 trainable variables: conv1/kernel:0, conv1_bn/gamma:0, conv1_bn/beta:0, conv_dw_1/depthwise_kernel:0, conv_dw_1_bn/gamma:0, ...
trainable_variable_ids = {id(v) for v in loaded.trainable_variables}
non_trainable_variables = [v for v in loaded.variables
if id(v) not in trainable_variable_ids]
print("MobileNet also has {} non-trainable variables: {}, ...".format(
len(non_trainable_variables),
", ".join([v.name for v in non_trainable_variables[:3]])))
MobileNet also has 54 non-trainable variables: conv1_bn/moving_mean:0, conv1_bn/moving_variance:0, conv_dw_1_bn/moving_mean:0, ...
Dışa aktarma sırasında imzaları belirleme
TensorFlow Sunumu ve saved_model_cli
gibi araçlar saved_model_cli
ile etkileşim kurabilir. Bu araçların hangi ConcreteFunctions'ı kullanacağını belirlemesine yardımcı olmak için sunum imzaları belirtmeniz gerekir. tf.keras.Model
, sunum imzalarını otomatik olarak belirtir, ancak özel modüllerimiz için açık bir şekilde bir sunum imzası bildirmeniz gerekir.
Varsayılan olarak, özel bir tf.Module
hiçbir imza bildirilmez.
assert len(imported.signatures) == 0
Bir sunum imzası bildirmek için, kwarg signatures
kullanarak bir ConcreteFunction belirtin. Tek bir imza 'serving_default'
, imza anahtarı 'serving_default'
sabiti olarak kaydedilen 'serving_default'
tf.saved_model.DEFAULT_SERVING_SIGNATURE_DEF_KEY
.
module_with_signature_path = os.path.join(tmpdir, 'module_with_signature')
call = module.__call__.get_concrete_function(tf.TensorSpec(None, tf.float32))
tf.saved_model.save(module, module_with_signature_path, signatures=call)
Tracing with Tensor("x:0", dtype=float32) Tracing with Tensor("x:0", dtype=float32) INFO:tensorflow:Assets written to: /tmp/tmpfcgkddlh/module_with_signature/assets
imported_with_signatures = tf.saved_model.load(module_with_signature_path)
list(imported_with_signatures.signatures.keys())
['serving_default']
Birden çok imzayı dışa aktarmak için, bir imza anahtarları sözlüğünü ConcreteFunctions'a iletin. Her imza anahtarı bir ConcreteFunction'a karşılık gelir.
module_multiple_signatures_path = os.path.join(tmpdir, 'module_with_multiple_signatures')
signatures = {"serving_default": call,
"array_input": module.__call__.get_concrete_function(tf.TensorSpec([None], tf.float32))}
tf.saved_model.save(module, module_multiple_signatures_path, signatures=signatures)
Tracing with Tensor("x:0", shape=(None,), dtype=float32) Tracing with Tensor("x:0", shape=(None,), dtype=float32) INFO:tensorflow:Assets written to: /tmp/tmpfcgkddlh/module_with_multiple_signatures/assets
imported_with_multiple_signatures = tf.saved_model.load(module_multiple_signatures_path)
list(imported_with_multiple_signatures.signatures.keys())
['serving_default', 'array_input']
Varsayılan olarak, çıktı tensör adları, output_0
gibi oldukça geneldir. Çıktıların adlarını kontrol etmek için, tf.function
çıktı adlarını çıktılara eşleyen bir sözlük tf.function
şekilde değiştirin. Girişlerin isimleri Python fonksiyonu arg isimlerinden türetilir.
class CustomModuleWithOutputName(tf.Module):
def __init__(self):
super(CustomModuleWithOutputName, self).__init__()
self.v = tf.Variable(1.)
@tf.function(input_signature=[tf.TensorSpec([], tf.float32)])
def __call__(self, x):
return {'custom_output_name': x * self.v}
module_output = CustomModuleWithOutputName()
call_output = module_output.__call__.get_concrete_function(tf.TensorSpec(None, tf.float32))
module_output_path = os.path.join(tmpdir, 'module_with_output_name')
tf.saved_model.save(module_output, module_output_path,
signatures={'serving_default': call_output})
INFO:tensorflow:Assets written to: /tmp/tmpfcgkddlh/module_with_output_name/assets
imported_with_output_name = tf.saved_model.load(module_output_path)
imported_with_output_name.signatures['serving_default'].structured_outputs
{'custom_output_name': TensorSpec(shape=(), dtype=tf.float32, name='custom_output_name')}
C ++ 'da SavedModel Yükleme
SavedModel yükleyicinin C ++ sürümü, SessionOptions ve RunOptions'a izin verirken, bir yoldan SavedModel yüklemek için bir API sağlar. Yüklenecek grafikle ilişkili etiketleri belirtmelisiniz. SavedModel'in yüklü sürümü SavedModelBundle olarak adlandırılır ve MetaGraphDef'i ve içinde yüklendiği oturumu içerir.
const string export_dir = ...
SavedModelBundle bundle;
...
LoadSavedModel(session_options, run_options, export_dir, {kSavedModelTagTrain},
&bundle);
SavedModel komut satırı arayüzünün ayrıntıları
SavedModel'i incelemek ve yürütmek için SavedModel Komut Satırı Arayüzünü (CLI) kullanabilirsiniz. Örneğin, modelin SignatureDef
öğelerini incelemek için CLI'yi kullanabilirsiniz. CLI, giriş Tensör tipi ve şeklinin modelle eşleştiğini hızlı bir şekilde onaylamanızı sağlar. Dahası, modelinizi test etmek istiyorsanız, çeşitli formatlarda (örneğin, Python ifadeleri) örnek girişleri geçirip ardından çıktıyı getirerek bir akıl sağlığı kontrolü yapmak için CLI'yi kullanabilirsiniz.
SavedModel CLI'yi yükleyin
Genel olarak, TensorFlow'u aşağıdaki iki yoldan biriyle kurabilirsiniz:
- Önceden oluşturulmuş bir TensorFlow ikili dosyası kurarak.
- Kaynak kodundan TensorFlow oluşturarak.
TensorFlow'u önceden oluşturulmuş bir TensorFlow ikili programıyla kurduysanız, SavedModel CLI, bin/saved_model_cli
yol bin/saved_model_cli
sisteminize zaten yüklenmiştir.
TensorFlow'u kaynak koddan oluşturduysanız, saved_model_cli
oluşturmak için aşağıdaki ek komutu çalıştırmanız gerekir:
$ bazel build tensorflow/python/tools:saved_model_cli
Komutlara genel bakış
SavedModel CLI, SavedModel'de aşağıdaki iki komutu destekler:
-
show
bir SavedModel dan olan Şekil hesaplamaları mevcuttur. - SavedModel'den bir hesaplama
run
.
show
komut
SavedModel, etiket kümeleriyle tanımlanan bir veya daha fazla model varyantı (teknik olarak v1.MetaGraphDef
s) içerir. Bir modeli sunmak için, her model varyantında ne tür SignatureDef
olduğunu ve bunların girdilerinin ve çıktılarının neler olduğunu merak edebilirsiniz. show
komutu, SavedModel'in içeriğini hiyerarşik sırada incelemenizi sağlar. Sözdizimi şöyledir:
usage: saved_model_cli show [-h] --dir DIR [--all]
[--tag_set TAG_SET] [--signature_def SIGNATURE_DEF_KEY]
Örneğin, aşağıdaki komut SavedModel'deki tüm kullanılabilir etiket kümelerini gösterir:
$ saved_model_cli show --dir /tmp/saved_model_dir
The given SavedModel contains the following tag-sets:
serve
serve, gpu
Aşağıdaki komut, bir etiket kümesi için mevcut tüm SignatureDef
anahtarlarını gösterir:
$ saved_model_cli show --dir /tmp/saved_model_dir --tag_set serve
The given SavedModel `MetaGraphDef` contains `SignatureDefs` with the
following keys:
SignatureDef key: "classify_x2_to_y3"
SignatureDef key: "classify_x_to_y"
SignatureDef key: "regress_x2_to_y3"
SignatureDef key: "regress_x_to_y"
SignatureDef key: "regress_x_to_y2"
SignatureDef key: "serving_default"
Etiket kümesinde birden fazla etiket varsa, her etiket virgülle ayrılmış olarak tüm etiketleri belirtmelisiniz. Örneğin:
$ saved_model_cli show --dir /tmp/saved_model_dir --tag_set serve,gpu
Belirli bir SignatureDef
için tüm girişleri ve çıkışları TensorInfo göstermek için, SignatureDef
anahtarını signature_def
seçeneğine geçirin. Bu, hesaplama grafiğini daha sonra yürütmek için giriş tensörlerinin tensör anahtar değerini, dtipini ve şeklini bilmek istediğinizde çok kullanışlıdır. Örneğin:
$ saved_model_cli show --dir \
/tmp/saved_model_dir --tag_set serve --signature_def serving_default
The given SavedModel SignatureDef contains the following input(s):
inputs['x'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 1)
name: x:0
The given SavedModel SignatureDef contains the following output(s):
outputs['y'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 1)
name: y:0
Method name is: tensorflow/serving/predict
SavedModel'de mevcut tüm bilgileri göstermek için --all
seçeneğini kullanın. Örneğin:
$ saved_model_cli show --dir /tmp/saved_model_dir --all MetaGraphDef with tag-set: 'serve' contains the following SignatureDefs: signature_def['classify_x2_to_y3']: The given SavedModel SignatureDef contains the following input(s): inputs['inputs'] tensor_info: dtype: DT_FLOAT shape: (-1, 1) name: x2:0 The given SavedModel SignatureDef contains the following output(s): outputs['scores'] tensor_info: dtype: DT_FLOAT shape: (-1, 1) name: y3:0 Method name is: tensorflow/serving/classify ... signature_def['serving_default']: The given SavedModel SignatureDef contains the following input(s): inputs['x'] tensor_info: dtype: DT_FLOAT shape: (-1, 1) name: x:0 The given SavedModel SignatureDef contains the following output(s): outputs['y'] tensor_info: dtype: DT_FLOAT shape: (-1, 1) name: y:0 Method name is: tensorflow/serving/predict
komut run
Bir grafik hesaplaması çalıştırmak, girişleri geçirmek ve ardından çıktıları görüntülemek (ve isteğe bağlı olarak kaydetmek) için run
komutunu çağırın. Sözdizimi şöyledir:
usage: saved_model_cli run [-h] --dir DIR --tag_set TAG_SET --signature_def
SIGNATURE_DEF_KEY [--inputs INPUTS]
[--input_exprs INPUT_EXPRS]
[--input_examples INPUT_EXAMPLES] [--outdir OUTDIR]
[--overwrite] [--tf_debug]
run
komutu, girdileri modele geçirmek için aşağıdaki üç yolu sağlar:
-
--inputs
seçeneği, dosyalarda numpy ndarray geçirmenizi sağlar. -
--input_exprs
seçeneği Python ifadelerini--input_exprs
sağlar. -
--input_examples
seçenek geçmesine olanaktf.train.Example
.
--inputs
Dosyalardaki giriş verilerini iletmek için, aşağıdaki genel biçimi alan --inputs
seçeneğini belirtin:
--inputs <INPUTS>
GİRİŞLER aşağıdaki biçimlerden biridir:
-
<input_key>=<filename>
-
<input_key>=<filename>[<variable_name>]
Birden fazla GİRİŞ geçirebilirsiniz. Birden fazla girdi geçirirseniz, GİRİŞLERİN her birini ayırmak için bir noktalı virgül kullanın.
saved_model_cli
, dosya numpy.load
yüklemek için saved_model_cli
kullanır. Dosya adı aşağıdaki biçimlerden herhangi birinde olabilir:
-
.npy
-
.npz
- turşu biçimi
Bir .npy
dosyası her zaman bir numpy ndarray içerir. Bu nedenle, bir .npy
dosyasından yüklerken, içerik doğrudan belirtilen giriş tensörüne atanacaktır. Bu .npy
dosyasıyla bir değişken_adı belirtirseniz, değişken_adı yok sayılır ve bir uyarı verilir.
Bir .npz
(zip) dosyasından yükleme yaparken, isteğe bağlı olarak, girdi tensör anahtarı için yüklenecek zip dosyası içindeki değişkeni tanımlamak için bir değişken_adı belirtebilirsiniz. Bir değişken_adı belirtmezseniz, SavedModel CLI, zip dosyasına yalnızca bir dosyanın dahil olup olmadığını kontrol eder ve belirtilen giriş tensör anahtarı için onu yükler.
Bir turşu dosyasından yükleme yapılırken, köşeli parantez içinde variable_name
belirtilmezse, turşu dosyasının içindeki her ne olursa olsun, belirtilen giriş tensör anahtarına aktarılacaktır. Aksi takdirde, SavedModel CLI, turşu dosyasında bir sözlüğün saklandığını varsayar ve değişken_ismi ile ilgili değer kullanılır.
--input_exprs
Girdileri Python ifadelerinden geçirmek için --input_exprs
seçeneğini belirtin. Bu, etrafta veri dosyalarınız olmadığında, ancak yine de modelin SignatureDef
lerinin dtype ve şekline uyan bazı basit girdilerle modeli mantıklı bir şekilde kontrol etmek istediğinizde yararlı olabilir. Örneğin:
`<input_key>=[[1],[2],[3]]`
Python ifadelerine ek olarak, numpy işlevlerini de iletebilirsiniz. Örneğin:
`<input_key>=np.ones((32,32,3))`
( numpy
modülünün sizin için zaten np
olarak mevcut olduğunu unutmayın.)
--input_examples
tf.train.Example
girdi olarak geçirmek için --input_examples
seçeneğini belirtin. Her giriş tuşu için, her sözlüğün bir tf.train.Example
örneği olduğu bir sözlük listesi alır. Sözlük tuşları, özelliklerdir ve değerler, her özelliğin değer listeleridir. Örneğin:
`<input_key>=[{"age":[22,24],"education":["BS","MS"]}]`
Çıktıyı kaydet
Varsayılan olarak, SavedModel CLI çıktıyı stdout'a yazar. Bir dizin --outdir
seçeneğine aktarılırsa, çıktılar belirtilen dizinin altındaki çıkış tensör anahtarlarından sonra adlandırılan .npy
dosyaları olarak kaydedilir.
Mevcut çıktı dosyalarının üzerine yazmak için --overwrite
kullanın.