在C API中有 TF_GraphGetTensorShape
这个函数,但该接口与C++的Graph
和 Output
不兼容。如何使用tensorflow C/C++ API实现相同的功能?
例如:如何使用C++ API获取Slice
操作的返回张量形状,然后使用该张量形状创建一个具有相同形状的variable
?
在C API中有 TF_GraphGetTensorShape
这个函数,但该接口与C++的Graph
和 Output
不兼容。如何使用tensorflow C/C++ API实现相同的功能?
例如:如何使用C++ API获取Slice
操作的返回张量形状,然后使用该张量形状创建一个具有相同形状的variable
?
这是一个返回向量形状的小函数,例如{48,48,2}
std::vector<int> get_tensor_shape(tensorflow::Tensor& tensor)
{
std::vector<int> shape;
int num_dimensions = tensor.shape().dims()
for(int ii_dim=0; ii_dim<num_dimensions; ii_dim++) {
shape.push_back(tensor.shape().dim_size(ii_dim));
}
return shape;
}
tensor.get_shape().as_list()
。我从未使用过tensorflow C API,但在C++ API中,你有class Tensor
,其中包含函数shape()
。它将返回const TensorShape&
,其中包含函数dim_size(int index)
。这个函数将为给定的索引值返回维数。希望这能帮到你 :)
tensor
只有在会话运行后才返回。如果您需要在运行会话之前获取张量形状,则可以在C API中使用TF_GraphGetTensorShape。我只是不知道如何在C++ API中实现这一点。与此相关的一些内容是推断某个操作的输出张量形状,这可能是C++ API没有提供或我尚未找到的。 - wumo