Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
tensorflow::Tensor到python Tensor或numpy.nd\u数组 我有一个C++ TysFooS::张量,我想在Python中访问它的内容。_Python_C++_C_Tensorflow_Python C Api - Fatal编程技术网

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作为依赖项