ConcreteFunction

کلاس عمومی ConcreteFunction

نموداری که می تواند به عنوان یک تابع واحد، با امضای ورودی و خروجی فراخوانی شود.

یک تابع همچنین می تواند یک تابع tf. تعریف شده در یک SavedModelBundle را فراخوانی کند.

ConcreteFunction myFunction = savedModelBundle.function("myFunctionSignatureName");
 Map<String, Tensor> outputTensorMap = myFunction.call(inputTensorMap);
 

روش های عمومی

تانسور
تماس ( تانسور تانسور)
یک تابع را با یک ورودی و خروجی فراخوانی می کند.
نقشه< رشته، تانسور >
فراخوانی (Map<String, Tensor > arguments)
یک تابع را فراخوانی می کند.
خالی
استاتیک ConcreteFunction
ایجاد ( امضا ، جلسه جلسه )
یک تابع از یک امضا و یک جلسه نمودار معتبر ایجاد کنید.
استاتیک ConcreteFunction
ایجاد (Function<Ops, Signature > functionBuilder)
با ساختن یک نمودار جدید یک تابع ایجاد می کند.
استاتیک ConcreteFunction
ایجاد (امضای امضا ، نمودار نمودار)
یک تابع از یک امضا و یک نمودار موجود ایجاد کنید.
نمودار
نمودار ()
نمودار این تابع را برمی‌گرداند
خالی
ذخیره (رشته exportDir)
این تابع را به عنوان یک مدل ذخیره شده صادر کنید.
جلسه
جلسه ()
جلسه مورد استفاده برای اجرای نمودار هنگام فراخوانی این تابع را برمی‌گرداند

به طور کلی، کاربر نیازی به مدیریت مستقیم جلسه یک تابع ندارد و به جای آن برای اجرای نمودار به call(Map) تکیه می کند.

امضا
امضا ()
امضای این تابع را برمی گرداند
رشته

روش های ارثی

روش های عمومی

تماس تانسور عمومی ( تانسور تانسور)

یک تابع را با یک ورودی و خروجی فراخوانی می کند.

تماس گیرنده مسئول بستن تمام تنسورها است.

مولفه های
تانسور تانسور ورودی
برمی گرداند
  • تانسور خروجی
پرتاب می کند
IllegalArgumentException اگر چندین پارامتر ورودی یا خروجی در تابع تعریف شده باشد

نقشه عمومی <رشته، تنسور > فراخوانی (نقشه<رشته، تنسور > آرگومانها)

یک تابع را فراخوانی می کند.

تماس گیرنده مسئول بستن تمام تنسورها است.

مولفه های
استدلال ها لیستی از تانسورهایی که باید در ورودی تابع ارسال شوند که با نام امضای آنها نگاشت شده است
برمی گرداند
  • تانسورهای خروجی حاصل از اجرای تابع، با نام امضای آنها نگاشت شده اند
پرتاب می کند
IllegalArgumentException

بسته شدن فضای خالی عمومی ()

ایجاد ConcreteFunction ثابت عمومی ( امضا ، جلسه جلسه )

یک تابع از یک امضا و یک جلسه نمودار معتبر ایجاد کنید.

تابع نه صاحب جلسه و نه نمودار آن خواهد بود، به این معنی که طول عمر آنها فراتر از محدوده تابع است. بنابراین نیازی به بسته شدن تابع پس از استفاده نیست. به عنوان مثال:

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
 }
 }

مولفه های
امضا امضای تابع برای ایجاد
جلسه یک جلسه معتبر به یک گراف اولیه
برمی گرداند
  • یک عملکرد جدید

ایجاد ConcreteFunction ثابت عمومی (Function<Ops, Signature > functionBuilder)

با ساختن یک نمودار جدید یک تابع ایجاد می کند.

functionBuilder باید نمودار تابع را از نمونه ارائه شده ERROR(/Ops) مقداردهی کند و یک امضای معتبر برگرداند که برای تغذیه تانسورهای ورودی و واکشی تانسورهای خروجی در هنگام اجرا استفاده می‌شود.

تابع مالک نمودار جدید و جلسه حاصل از آن خواهد بود. بنابراین، تابع باید به درستی با یک بلوک try-with-resources محصور شود تا تضمین شود که تمام منابع بومی پس از حذف تابع آزاد می شوند. به عنوان مثال:

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());
     }
   }
 }
 }

مولفه های
functionBuilder سازنده عملکرد
برمی گرداند
  • تابع جدید

ایجاد ConcreteFunction ثابت عمومی (امضای امضا ، نمودار نمودار)

یک تابع از یک امضا و یک نمودار موجود ایجاد کنید.

این تابع مالکیت جلسه مورد استفاده برای اجرای نمودار را حفظ می کند، اما نه خود نمودار، به این معنی که طول عمر دومی می تواند فراتر از محدوده تابع باشد. به عنوان مثال:

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
 }
 }

مولفه های
امضا امضای تابع برای ایجاد
نمودار یک گراف معتبر و اولیه
برمی گرداند
  • یک عملکرد جدید

نمودار نمودار عمومی ()

نمودار این تابع را برمی‌گرداند

ذخیره خالی عمومی (String exportDir)

این تابع را به عنوان یک مدل ذخیره شده صادر کنید.

این روش میانبر مناسب معادل SavedModel.exporter(exportDir).withFunction(this).export() است.

مولفه های
exportDir دایرکتوری که در آن مدل ذخیره شده را صادر کنیم
پرتاب می کند
IOException اگر مدل ذخیره شده یا وضعیت متغیر را نمی توان روی دیسک نوشت

جلسه عمومی ()

جلسه مورد استفاده برای اجرای نمودار هنگام فراخوانی این تابع را برمی‌گرداند

به طور کلی، کاربر نیازی به مدیریت مستقیم جلسه یک تابع ندارد و به جای آن برای اجرای نمودار به call(Map) تکیه می کند. اما در برخی موارد، دسترسی مستقیم به جلسه ممکن است ضروری باشد، زیرا امکان اجرای گزینه های بیشتری را فراهم می کند.

برمی گرداند
  • جلسه عملکرد

امضای عمومی ()

امضای این تابع را برمی گرداند

رشته عمومی toString ()