我正在运行一个 Tensorflow 模型,返回一个 3D 数组作为输出,但我无法从张量中获取该数据数组。
我确实打印了模型输出的形状,没有任何问题。
std::vector<tf::Tensor> outputs;
auto start_inference = std::chrono::high_resolution_clock::now();
_status = _session->Run({inputs}, {"k2tfout_0", "k2tfout_1"}, {}, &outputs);
if (!_status.ok())
{
std::cerr << _status.ToString() << std::endl;
return 0;
}
unsigned int output_img_n0 = outputs[0].shape().dim_size(0);
unsigned int output_img_h0 = outputs[0].shape().dim_size(1);
unsigned int output_img_w0 = outputs[0].shape().dim_size(2);
unsigned int output_img_c0 = outputs[0].shape().dim_size(3);
Run Code Online (Sandbox Code Playgroud)
该代码运行时没有任何错误,并显示了数组的形状。但是,我仍然无法从输出 Tensor 对象中获取数据。
唯一的功能是
float_t *plant_pointer = outputs[1].flat<float_t>().data();
Run Code Online (Sandbox Code Playgroud)
但它破坏了阵列形状。
编辑:
张量的输出形状是 [num,high,width,channel] === [1,480,600,3]。因此,输出是模型的语义分割图像的图像。我只想要没有第一个暗淡的图像部分,它总是为 1。