在C中重塑张量

时间:2018-11-21 22:01:43

标签: c++ tensorflow deep-learning c-api

如何像在C ++中那样使用Tensorflow的C_api重塑TF_Tensor *?

TensorShape inputShape({1,1,80,80});

Tensor inputTensor;
Tensor newTensor;

bool result = inputTensor->CopyFrom(newTensor, inputShape);

我没有看到使用张量流的c_api的类似方法。

1 个答案:

答案 0 :(得分:1)

Tensorflow C API使用supervisor, student -> consultation-day 模型进行操作-将数据视为提供所需尺寸的平面原始数组。

步骤1 :分配(data,dims)张量

看看newref):

TF_AllocateTensor

这里:

  1. TF_CAPI_EXPORT extern TF_Tensor* TF_AllocateTensor(TF_DataType, const int64_t* dims, int num_dims, size_t len); :等效于hereTF_DataType数据类型。
  2. TF:与要分配的张量的尺寸对应的数组,例如dims
  3. {1, 1, 80, 80}:暗淡的长度(上面num_dims
  4. 4:reduce(dims,*):即1 * 1 * 80 * 80 * sizeof(DataType)= 6400 * sizeof(DataType)。

第2步:复制数据

len

Here是我在写一个非常轻量的Tensorflow C-API包装器时做的一个项目的一些示例代码。

因此,实质上,您的重塑将涉及分配新的张量并将数据从原始张量复制到// Get the tensor buffer auto buff = (DataType *)TF_TensorData(output_of_tf_allocate); // std::memcpy() ...

Tensorflow C API不适合常规使用,因此更难学习且缺少文档。我通过实验得出了很多结论。有经验的开发人员有什么建议吗?