小编Zah*_*abd的帖子

如何从C++中的Tensor对象获取数据

我正在运行一个 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。

c++ eigen tensorflow

2
推荐指数
1
解决办法
3602
查看次数

标签 统计

c++ ×1

eigen ×1

tensorflow ×1