此页面由 Cloud Translation API 翻译。
Switch to English

tff.tf_computation

GitHub上查看源代码

装饰/包装Python函数和作为defuns TFF TensorFlow计算。

用在笔记本电脑

使用教程

该符号可以用作任一个装饰或施加给它作为自变量的函数的包装。是支持的模式和使用的例子如下:

  1. 将现有功能内嵌到TFF计算。这是使用最简单的方式,以及如何可以嵌入现有的非TFF代码与TFF框架使用。在此模式中,一个所调用tff.tf_computation有一对自变量,第一个是功能/ defun定义包含逻辑,以及第二个是参数的TFF类型:
 foo = tff.tf_computation(lambda x: x > 10, tf.int32)
 

执行上面的代码段后, foo成为抽象基类的一个实例Computation 。像所有的计算,它具有type_signature属性:

 str(foo.type_signature) == '(int32 -> bool)'
 

作为参数传递的功能并不一定是lambda,它也可以是现有的Python函数或defun定义。以下是如何从标准TensorFlow运营商构建一个计算tf.add

 foo = tff.tf_computation(tf.add, (tf.int32, tf.int32))
 

结果类型签名预期:

 str(foo.type_signature) == '(<int32,int32> -> int32)'
 

如果一个打算创建不接受任何参数的计算,该类型参数是简单的忽略了。该功能必须是一个无参数的功能,以及:

 foo = tf_computation(lambda: tf.constant(10))
 
  1. 装饰用TFF型Python函数或TensorFlow defun定义包裹它作为一个TFF计算。使用这种模式和所述一个之间的唯一区别上述是,而不是传递的功能/ defun定义作为参数, tff.tf_computation与可选的类型说明符一起被的功能/ defun定义的身体上面写。

    下面是接受一个参数的计算的例子:

 @tff.tf_computation(tf.int32)
def foo(x):
  return x > 10
 

我们可以把这种模式的使用作为较早已经给出的例子仅仅是一个语法糖:

 foo = tff.tf_computation(lambda x: x > 10, tf.int32)
 

这里有一个无参数计算的一个例子:

 @tff.tf_computation
def foo():
  return tf.constant(10)
 

再次,这是前面给出的例子只是语法糖:

 foo = tff.tf_computation(lambda: tf.constant(10))
 

如果Python函数有多个装饰器, tff.tf_computation应该是最外面的一个(首先出现在序列中的一个)。

  1. 创建一个多态调用基于参数被实例化,已无需输入签名被定义TensorFlow defuns类似。

    这种使用模式是对称的上述那些。一个简单的省略类型说明,并适用tff.tf_computation作为装饰或包装的功能/ defun定义是不期望的参数。

    这里有一个包裹作为拉姆达多态可调用的例子:

 foo = tff.tf_computation(lambda x, y: x > y)
 

得到的foo可以就好像它是有类型被宣告相同方式使用;相应的计算是简单的按需创建的,以同样的方式多态TensorFlow defuns如何创建和参数类型的每个组合缓存的具体功能定义。

 ...foo(1, 2)...
...foo(0.5, 0.3)...
 

以下是创建一个多态调用通过装饰的例子:

 @tff.tf_computation
def foo(x, y):
  return x > y
 

语法是对称已经示出的所有实施例。

*args 任一功能/ defun定义,或TFF型规格,或二者(第一功能),或两者都不是,作为记录在3种模式和使用上述的例子。

如果用一个函数作为参数调用,返回TFF计算的实例,构建了基于此功能。如果被不带一个,如在使用的典型的装饰样式,则返回一个可调用一个期望与作为参数提供的功能定义被调用;看模式和使用上述的例子。