Python TensorFlow OpDef“;func";属性类型解释

Python TensorFlow OpDef“;func";属性类型解释,python,scala,tensorflow,Python,Scala,Tensorflow,我目前正在为TensorFlow实现Scala API,并使用Scala.meta自动生成Op创建方法。我从C API调用TF_GetAllOpList,以获取OpList协议缓冲区,然后对其进行解析以创建方法 每个Op都可以有一组属性,每个属性都有一个类型和一个默认值(可选)。对于func属性的默认值应该是什么样子,以及如何在创建Op时通过C API设置该属性值,我感到困惑(即,没有TF_SetAttrFunc函数)。有人能就此作出澄清吗?另外,在生成pythonapi时参考当前所做的工作(以

我目前正在为TensorFlow实现Scala API,并使用Scala.meta自动生成Op创建方法。我从C API调用
TF_GetAllOpList
,以获取OpList协议缓冲区,然后对其进行解析以创建方法

每个Op都可以有一组属性,每个属性都有一个类型和一个默认值(可选)。对于
func
属性的默认值应该是什么样子,以及如何在创建Op时通过C API设置该属性值,我感到困惑(即,没有
TF_SetAttrFunc
函数)。有人能就此作出澄清吗?另外,在生成pythonapi时参考当前所做的工作(以及生成API的代码的相关部分)将非常感谢

对于
占位符
属性类型,我也有点困惑,我可能需要一些关于其含义和用法的帮助,但如果需要,我可以为此创建一个单独的问题


谢谢大家!

C API中还不支持函数值属性。某些语言(如Go)目前跳过了这些操作的生成函数。Python生成
GraphDef
proto,而不是使用C API函数。这可能在将来发生变化,因为直接生成
GraphDef
更容易出错,性能也更低(因为在运行时理解图形之前必须对
GraphDef
进行序列化和反序列化)。出于好奇,您的Scala API是否构建在上?我明白了。这很有趣,因为我认为这些文件用于生成使用C API的python操作。我不是建立在JavaAPI之上;我使用了相同的JNI绑定,并使用它们构建了一个单独的Scala库。我的计划是编写一个宏来使用C API
TF_GetAllOpList
函数生成ops,但我现在决定手动移植ops。这一决定是因为这样可以更容易地对操作进行分组并优化其API。我计划一旦有了一个好的工作版本,就将GitHub存储库公开,但同时我可以将有兴趣协作的人添加到私有存储库中。C API中还不支持函数值属性。某些语言(如Go)目前跳过了这些操作的生成函数。Python生成
GraphDef
proto,而不是使用C API函数。这可能在将来发生变化,因为直接生成
GraphDef
更容易出错,性能也更低(因为在运行时理解图形之前必须对
GraphDef
进行序列化和反序列化)。出于好奇,您的Scala API是否构建在上?我明白了。这很有趣,因为我认为这些文件用于生成使用C API的python操作。我不是建立在JavaAPI之上;我使用了相同的JNI绑定,并使用它们构建了一个单独的Scala库。我的计划是编写一个宏来使用C API
TF_GetAllOpList
函数生成ops,但我现在决定手动移植ops。这一决定是因为这样可以更容易地对操作进行分组并优化其API。我计划一旦有了一个好的工作版本,就将GitHub存储库公开,但同时我可以将有兴趣协作的人添加到私有存储库中。