当在tensorflow中创建op时,不能将Attr设置为{type,list(type)}

时间:2016-08-07 13:39:51

标签: tensorflow

似乎在tensorflow操作创建中不允许Attr("Tout: {list(type), type}")

F tensorflow/core/framework/op.cc:160] Check failed: ::tensorflow::Status::OK() == (RegisterAlreadyLocked(deferred_[i])) (OK vs. Invalid argument: Unrecognized type string 'type' from Attr("Tout: {type, list(type)}") for Op Py

1 个答案:

答案 0 :(得分:0)

TensorFlow OpDef类型系统当前不支持其类型可以是类型列表或单个类型的参数(或输出)。相反,您可以使用.Attr("Tout: list(type)")来表示输入(或输出)类型。如果张量列表和单个张量之间的区别很重要,则可以使用额外的bool - 值attr来表示该区别。

请注意,如果您使用自动生成的Python包装器来调用您的操作,并且您希望此输入接受单个张量或张量列表,则需要添加一个自定义包装函数来创建列表适当。标准TensorFlow库中的functionQueueBase.enqueue()QueueBase.enqueue_many()参数执行此操作,这些参数可以是单个张量或张量列表。