C API中有TF_GraphGetTensorShape
,但是接口与C ++ Graph
和Output
不兼容。如何使用Tensorflow C / C ++ API做同样的事情?
例如。如何使用C ++ API获取返回的Slice
操作的张量形状,然后使用该张量形状制作具有相同形状的variable
?
答案 0 :(得分:4)
这是一个小函数,可将形状作为矢量返回,例如{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.DebugString()很有帮助,例如产生 “张量类型:浮点形状:[48,48,2]值:[[0,0390625 -1] [0,0390625]] ...>”
对于python,请参见以下线程:https://stackoverflow.com/a/40666375/2135504,其中推荐使用tensor.get_shape().as_list()
。
答案 1 :(得分:2)
我从未使用过tensorflow C API,但在C ++ API中,您有def convert_to_unicode(text: str):
# Replace %.
text = text.replace('%', '\\')
# Escape unicode into character.
text = text.encode().decode('unicode-escape')
return text
,它们具有函数class Tensor
。它将返回shape()
,该函数具有功能const TensorShape&
。此函数将返回给定索引值的尺寸。希望对您有帮助:)