tensorflow::Tensor到python Tensor或numpy.nd\u数组 我有一个C++ TysFooS::张量,我想在Python中访问它的内容。
我在搜索一个可以将tensorflow::Tensor到python Tensor或numpy.nd\u数组 我有一个C++ TysFooS::张量,我想在Python中访问它的内容。,python,c++,c,tensorflow,python-c-api,Python,C++,C,Tensorflow,Python C Api,我在搜索一个可以将tensorflow::Tensor转换为任何可感知的PyObject(现在不管这是tf.Tensor还是numpy.nd\u数组)的函数时,已经仔细研究过了 在浏览Tensorflow代码之后,我发现了以下线索: 在tensorflow/python/client/TF\u session\u helper.cc中定义了一种方法TF\u Tensor\u to\u PyObject(TF\u Tensor*Tensor,PyObject**out\u数组)。但是,这是在隐藏的
tensorflow::Tensor
转换为任何可感知的PyObject
(现在不管这是tf.Tensor
还是numpy.nd\u数组
)的函数时,已经仔细研究过了
在浏览Tensorflow代码之后,我发现了以下线索:
在tensorflow/python/client/TF\u session\u helper.cc
中定义了一种方法TF\u Tensor\u to\u PyObject(TF\u Tensor*Tensor,PyObject**out\u数组)
。但是,这是在隐藏的BAZEL包中定义的,而且是在匿名C++命名空间中定义的。修改Tensorflow本身(我必须修改Bazel构建文件、.h和.cc文件)并编译我自己的Tensorflow来使用这种方法似乎是不直观的
这种方法的另一个问题是TF_张量
!=<代码>tensorflow::Tensor。TF_Tensor的TF_Tensor
在Tensorflow的C-Api中进行了定义,在这里,转换也不打算用于公共用途(如:本软件包之外)
有人知道更好的方法吗?对于搜索时未找到的
tensorflow::Tensor
到PyObject
是否存在现有的实现?py_func op的实现有。更准确地说,以下操作应该完成:
#include "tensorflow/python/lib/core/py_func.h"
Status TensorHandler::ExportTensorAsNumpy(const Tensor *inputTensor) {
PyObject* numpyObject = Py_None;
tensorflow::ConvertTensorToNdarray(*inputTensor, &numpyObject);
//process the numpy further its now stored in numpyObject
//call this when you don't use the numpyObject anymore
Py_DECREF(numpyObject);
}
当您不使用numpy对象时,不要忘记调用Py_DECREF,否则您的程序将导致内存泄漏。另外,不要忘记在bazel构建中包含py_func作为依赖项