Giriş ve çıkış imzasıyla tek bir işlev olarak çağrılabilen bir grafik.
Bir işlev aynı zamanda SavedModelBundle
içinde tanımlanan bir tf.function öğesini de çağırabilir.
ConcreteFunction myFunction = savedModelBundle.function("myFunctionSignatureName");
Map<String, Tensor> outputTensorMap = myFunction.call(inputTensorMap);
Genel Yöntemler
Tensör | |
Harita<Dize, Tensör > | |
geçersiz | kapalı () |
Statik BetonFonksiyonu | |
Statik BetonFonksiyonu | |
Statik BetonFonksiyonu | |
Grafik | grafik () Bu fonksiyonun grafiğini döndürür |
geçersiz | kaydet (Dize dışa aktarmaDir) Bu işlevi kaydedilmiş bir model olarak dışa aktarın. |
Oturum | |
İmza | imza () Bu işlevin imzasını döndürür |
Sicim | toString () |
Kalıtsal Yöntemler
Genel Yöntemler
genel Tensör çağrısı ( Tensör tensörü)
Tek giriş ve çıkışa sahip bir işlevi çağırır.
Arayan tüm Tensörlerin kapatılmasından sorumludur.
Parametreler
tensör | giriş tensörü |
---|
İade
- çıkış tensörü
Atar
YasadışıTartışmaİstisna | işlevde tanımlanmış birden fazla giriş veya çıkış parametresi varsa |
---|
genel Harita<String, Tensor > çağrısı (Map<String, Tensor > argümanlar)
Bir işlevi çağırır.
Arayan tüm Tensörlerin kapatılmasından sorumludur.
Parametreler
argümanlar | İmza adlarıyla eşlenen, işleve girdi olarak aktarılacak tensörlerin listesi |
---|
İade
- işlevin yürütülmesinden kaynaklanan, imza adlarıyla eşlenen çıktı tensörleri
Atar
YasadışıTartışmaİstisna |
---|
genel boşluk kapat ()
public static ConcreteFunction create ( İmza imzası , Oturum oturumu )
Bir imzadan ve geçerli bir grafik oturumundan bir işlev oluşturun.
İşlev, oturumun veya grafiğinin sahibi olmayacaktır; bu, bunların yaşam sürelerinin işlevin kapsamının dışına çıkabileceği anlamına gelir. Bu nedenle fonksiyonun kullanımından sonra kapatılmasına gerek yoktur. Örneğin:
try (Graph g = new Graph()) {
Placeholder<TFloat32> input = tf.placeholder(TFloat32.class);
Add<TFloat32> output = tf.math.add(input, tf.constant(2.0f));
Signature signature = Signature.builder().input("x", input).output("y", output).build();
try (Session s = new Session(g)) {
// Auto-closing the function just as an example but this is not required since it has
// no effect
try (ConcreteFunction f = ConcreteFunction.create(signature, s);
TFloat32 t = TFloat32.scalarOf(2.0f)) {
assertEquals(4.0f, ((TFloat32)function.call(x)).getFloat());
// Session s is still valid at this point
}
// Graph g is still valid at this point
}
}
Parametreler
imza | oluşturulacak fonksiyonun imzası |
---|---|
oturum | başlatılan bir grafiğe geçerli bir oturum |
İade
- yeni bir işlev
public static ConcreteFunction create (Function<Ops, Signature > functionBuilder)
Yeni bir grafik oluşturarak bir fonksiyon oluşturur.
functionBuilder
fonksiyon grafiğini sağlanan ERROR(/Ops)
örneğinden başlatmalı ve giriş tensörlerini beslemek ve yürütme sırasında çıkış tensörlerini getirmek için kullanılacak geçerli bir imza döndürmelidir.
İşlev, yeni grafiğin ve onun ortaya çıkan oturumunun sahibi olacaktır. Bu nedenle, işlev atıldıktan sonra tüm yerel kaynakların serbest bırakılacağını garanti etmek için işlevin bir try-with-resources bloğuyla düzgün bir şekilde kapatılması gerekir. Örneğin:
public class MyModel {
public static Signature addTwo(Ops tf) {
Placeholder<TFloat32> input = tf.placeholder(TFloat32.class);
Add<TFloat32> output = tf.math.add(input, tf.constant(2.0f));
return Signature.builder("addTwo").input("x", input).output("y", output).build();
public static void main(String args[]) {
try (ConcreteFunction function = ConcreteFunction.create(MyModel::addTwo);
TFloat32 x = TFloat32.scalarOf(2.0f)) {
assertEquals(4.0f, ((TFloat32)function.call(x)).getFloat());
}
}
}
}
Parametreler
fonksiyonBuilder | fonksiyon oluşturucu |
---|
İade
- yeni fonksiyon
public static ConcreteFunction create ( İmza imzası, Grafik grafiği)
Bir imzadan ve mevcut bir grafikten bir işlev oluşturun.
İşlev, grafiğin kendisini değil, grafiği çalıştırmak için kullanılan oturumun sahipliğini korur; bu, grafiğin ömrünün işlevin kapsamının dışına çıkabileceği anlamına gelir. Örneğin:
try (Graph g = new Graph()) {
Placeholder<TFloat32> input = tf.placeholder(TFloat32.class);
Add<TFloat32> output = tf.math.add(input, tf.constant(2.0f));
Signature signature = Signature.builder().input("x", input).output("y", output).build();
try (ConcreteFunction f = ConcreteFunction.create(signature, g);
TFloat32 x = TFloat32.scalarOf(2.0f)) {
assertEquals(4.0f, ((TFloat32)function.call(x)).getFloat());
// Graph g is still valid at this point
}
}
Parametreler
imza | oluşturulacak fonksiyonun imzası |
---|---|
grafik | geçerli ve başlatılmış bir grafik |
İade
- yeni bir işlev
genel geçersiz kaydetme (Dize ihracatDir)
Bu işlevi kaydedilmiş bir model olarak dışa aktarın.
Bu yöntem SavedModel.exporter(exportDir).withFunction(this).export()
yöntemine eşdeğer kullanışlı bir kısayoldur.
Parametreler
ihracatDizini | kaydedilen modelin dışa aktarılacağı dizin |
---|
Atar
IOİstisnası | kayıtlı model veya değişken durumu diske yazılamıyorsa |
---|
herkese açık Oturum oturumu ()
Bu işlevi çağırırken grafiği yürütmek için kullanılan oturumu döndürür
Genel olarak, kullanıcının doğrudan bir işlevin oturumunu yönetmesi ve bunun yerine grafiği yürütmek için call(Map)
işlevini kullanması gerekmez. Ancak bazı durumlarda, daha fazla çalıştırma seçeneğine izin verdiği için oturuma doğrudan erişim gerekli olabilir.
İade
- işlev oturumu