我在官方文档中找不到这方面的详细信息。
谁能提供更详细的信息?
TensorFlow使用attrs作为决定op的行为和类型(输入和输出的数量)的"编译时常量"。您可以定义一个具有TensorProto
作为其属性之一的op。例如,tf.constant()
op将其值作为attr,该attr在相应的op注册中定义。
这个特性有一些限制:
- 目前不可能静态地约束张量的形状。您需要在op的构造函数中验证这一点(通常调用
GetAttr
)。 - 同样,目前不可能静态地约束张量的元素类型,所以你也需要在运行时检查这一点。
- 在您的op的Python包装器中,您需要将attr的值作为
TensorProto
传递,例如通过调用tf.contrib.util.make_tensor_proto()
来进行转换。
int
、float
、bool
或string
attr比标量 TensorProto
更容易,但是如果需要编码不太常见的类型,可以使用TensorProto
选项。