TensorFlow新操作:AttributeError:'module'对象没有属性'custom_op'

时间:2017-02-27 19:52:08

标签: tensorflow

我正在为x86和ARMv7上运行的TensorFlow(r1.0)创建新的ops(https://www.tensorflow.org/extend/adding_an_op)。

在ARMv7上运行TensorFlow需要进行少量代码修改,但本指南有很多帮助: https://github.com/samjabrahams/tensorflow-on-raspberry-pi/blob/master/GUIDE.md

但我注意到自定义操作不适用于TensorFlow的ARMv7安装

例如,当我在ARMv7上的Python脚本中测试我的自定义操作时:

import tensorflow as tf
_custom_op_module = tf.load_op_library('custom_op.so')
custom_op = _custom_op_module.add_stub

我收到以下错误(在x86上没有显示):

$ python test_custom_op.py 
  Traceback (most recent call last):
  File "custom_op.py", line 3, in <module>
    add_stub = _custom_op_module.add_stub
  AttributeError: 'module' object has no attribute 'custom_op'

我进一步调查了这个问题,显然在.so库文件中没有我的自定义操作。

$ python
>>> import tensorflow as tf
>>> _custom_op_module = tf.load_op_library('custom_op.so')
>>> dir(_custom_op_module)
>>> ['LIB_HANDLE', 'OP_LIST', '_InitOpDefLibrary', '__builtins__', '__doc__', '__name__', '__package__', '_collections', '_common_shapes', '_op_def_lib', '_op_def_library', '_op_def_pb2', '_op_def_registry', '_ops', '_text_format']
>>> _custom_op_module.OP_LIST

>>>

x86上的相同命令具有以下输出:

>>> import tensorflow as tf
>>> _custom_op_module = tf.load_op_library('custom_op.so')
>>> dir(_custom_op_module)
>>> ['LIB_HANDLE', 'OP_LIST', '_InitOpDefLibrary', '__builtins__', '__doc__', '__name__', '__package__', '_add_stub_outputs', '_collections', '_common_shapes', '_op_def_lib', '_op_def_library', '_op_def_pb2', '_op_def_registry', '_ops', '_text_format', 'custom_op']
>>> _custom_op_module.OP_LIST
op {
  name: "CustomOp"
  ...
}
>>>

有没有人有类似的问题?我们可以认为这是一个错误吗?

2 个答案:

答案 0 :(得分:0)

显然,重新编译并重新安装TF使其有效。

答案 1 :(得分:0)

当我尝试加载我的新操作时,我遇到了类似的错误消息,但是出现了类似的错误消息,但是我的问题是我尝试注册了一个具有与tensorflow相同的操作名的自定义操作,并导致了名称冲突。更改名称可以修复它,而无需重新编译TF。

我遇到的错误消息: AttributeError: module '6e237d88703da016805889179d3f5baa' has no attribute 'custom_op'