Tensorflow中的自定义新操作会导致异常';未分配要释放的指针';

Tensorflow中的自定义新操作会导致异常';未分配要释放的指针';,tensorflow,Tensorflow,我正在学习如何向tensorflow following添加操作,但遇到了一些麻烦 我从Github克隆了源代码,并计划将tensorflow/core/user\u ops/Fact.cc中的Fact操作添加到框架中。我的做法如下: 在tensorflow/core/user_ops/中创建一个BUILD文件,内容如下: 在克隆项目的根目录中运行以下命令: bazel build-c opt-s//tensorflow/core/user_ops:fact.so 这确实会在bazel-bin/

我正在学习如何向tensorflow following添加操作,但遇到了一些麻烦

我从Github克隆了源代码,并计划将
tensorflow/core/user\u ops/Fact.cc
中的
Fact
操作添加到框架中。我的做法如下:

  • tensorflow/core/user_ops/
    中创建一个
    BUILD
    文件,内容如下:
  • 在克隆项目的根目录中运行以下命令:
  • bazel build-c opt-s//tensorflow/core/user_ops:fact.so

    这确实会在
    bazel-bin/tensorflow/core/user_-ops/

  • 将生成的
    事实复制到我的Python项目中,该项目位于另一个不相关的位置

  • 在Python项目中,运行

  • 结果是一个例外:

    python(77790,0x7fff742f7000)malloc:*对象错误 0x1c890ffde89:未分配要释放的指针 *在malloc\u error\u break中设置断点以调试中止陷阱:6

    但是,如果我直接使用clang++构建操作,比如:

    clang++-std=c++11-共享tensorflow/core/user_ops/fact.cc-o ~/Desktop/fact.so-fPIC-I$TF\u INC-未定义的动态\u查找

    其中,$TF_INC由以下公式计算:

    TF_INC=$(python-c'导入tensorflow作为TF; 打印(tf.sysconfig.get_include())')

    一切正常


    有人能告诉我第一种方法失败的原因吗?

    您能告诉我您机器上的gcc版本吗?您能告诉我您机器上的gcc版本吗?
    load("//tensorflow:tensorflow.bzl", "tf_custom_op_library")
    
    tf_custom_op_library(
        name = "fact.so",
        srcs = ["fact.cc"]
    )
    
    import tensorflow as tf
    
    fact_module = tf.load_op_library('fact.so')
    with tf.Session(''):
      print(fact_module.fact2().eval())