ConcreteFunction

وظيفة الخرسانة من الدرجة العامة

رسم بياني يمكن استدعاؤه كدالة واحدة، مع توقيع الإدخال والإخراج.

يمكن للوظيفة أيضًا استدعاء tf.function المحدد في SavedModelBundle .

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

الأساليب العامة

الموتر
استدعاء (الموتر الموتر )
يستدعي دالة ذات مدخلات ومخرجات واحدة.
خريطة<سلسلة، موتر >
استدعاء (وسائط Map<String, Tensor >)
يستدعي وظيفة.
فارغ
وظيفة الخرسانة الساكنة
إنشاء (توقيع التوقيع ، جلسة الجلسة )
قم بإنشاء وظيفة من التوقيع وجلسة رسم بياني صالحة.
وظيفة الخرسانة الساكنة
إنشاء (Function<Ops, Signature > functionBuilder)
إنشاء دالة عن طريق إنشاء رسم بياني جديد.
وظيفة الخرسانة الساكنة
إنشاء (توقيع التوقيع ، الرسم البياني )
إنشاء وظيفة من التوقيع والرسم البياني الموجود.
رسم بياني
رسم بياني ()
إرجاع الرسم البياني لهذه الوظيفة
فارغ
حفظ (سلسلة اكسبورتدير)
قم بتصدير هذه الوظيفة كنموذج محفوظ.
حصة
حصة ()
إرجاع الجلسة المستخدمة لتنفيذ الرسم البياني عند استدعاء هذه الوظيفة

بشكل عام، لا يحتاج المستخدم إلى التعامل مباشرة مع جلسة الوظيفة والاعتماد على call(Map) لتنفيذ الرسم البياني بدلاً من ذلك.

إمضاء
إمضاء ()
إرجاع توقيع هذه الوظيفة
خيط

الطرق الموروثة

الأساليب العامة

نداء الموتر العام ( الموتر الموتر )

يستدعي دالة ذات مدخلات ومخرجات واحدة.

المتصل هو المسؤول عن إغلاق كافة Tensors.

حدود
الموتر موتر الإدخال
عائدات
  • موتر الإخراج
رميات
غير الشرعيين استثناء حجة إذا كانت هناك معلمات إدخال أو إخراج متعددة محددة في الوظيفة

استدعاء Map<String, Tensor > العام (وسائط Map<String, Tensor >)

يستدعي وظيفة.

المتصل هو المسؤول عن إغلاق كافة Tensors.

حدود
الحجج قائمة الموترات لتمرير المدخلات إلى الوظيفة، المعينة حسب اسم التوقيع الخاص بها
عائدات
  • موترات الإخراج الناتجة عن تنفيذ الوظيفة، المعينة حسب اسم التوقيع الخاص بها
رميات
غير الشرعيين استثناء حجة

إغلاق الفراغ العام ()

إنشاء وظيفة ملموسة ثابتة عامة (توقيع التوقيع ، جلسة الجلسة )

قم بإنشاء وظيفة من التوقيع وجلسة رسم بياني صالحة.

لن تمتلك الوظيفة الجلسة ولا الرسم البياني الخاص بها، مما يعني أن عمرها يمكن أن يمتد إلى ما هو أبعد من نطاق الوظيفة. لذلك لا يلزم إغلاق الوظيفة بعد استخدامها. على سبيل المثال:

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) المقدم وإرجاع توقيع صالح سيتم استخدامه لتغذية موترات الإدخال وجلب موترات الإخراج عند التنفيذ.

ستكون الوظيفة هي مالك الرسم البياني الجديد وجلسته الناتجة. لذلك، يجب أن يتم إحاطة الوظيفة بشكل صحيح بكتلة محاولة مع الموارد لضمان تحرير كافة الموارد الأصلية بمجرد تجاهل الوظيفة. على سبيل المثال:

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 منشئ الوظيفة
عائدات
  • الوظيفة الجديدة

إنشاء وظيفة ملموسة ثابتة عامة (توقيع التوقيع ، الرسم البياني )

إنشاء وظيفة من التوقيع والرسم البياني الموجود.

ستحتفظ الوظيفة بملكية الجلسة المستخدمة لتشغيل الرسم البياني وليس الرسم البياني نفسه، مما يعني أن عمر الأخير يمكن أن يمتد إلى ما هو أبعد من نطاق الوظيفة. على سبيل المثال:

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

حدود
importDir الدليل حيث سيتم تصدير النموذج المحفوظ
رميات
IOEException إذا تعذر كتابة النموذج المحفوظ أو الحالة المتغيرة على القرص

جلسة الجلسة العامة ()

إرجاع الجلسة المستخدمة لتنفيذ الرسم البياني عند استدعاء هذه الوظيفة

بشكل عام، لا يحتاج المستخدم إلى التعامل مباشرة مع جلسة الوظيفة والاعتماد على call(Map) لتنفيذ الرسم البياني بدلاً من ذلك. ولكن في بعض الحالات، قد يكون الوصول المباشر إلى الجلسة ضروريًا، لأنه يتيح المزيد من خيارات التشغيل.

عائدات
  • الجلسة الوظيفية

التوقيع العام التوقيع ()

إرجاع توقيع هذه الوظيفة

سلسلة عامة إلى سلسلة ()