在 Tensorflow C++ 中将浮点向量传递给张量

Posted

技术标签:

【中文标题】在 Tensorflow C++ 中将浮点向量传递给张量【英文标题】:Pass Vector of Floats to Tensor in Tensorflow C++ 【发布时间】:2018-05-08 23:00:38 【问题描述】:

我有一个 LSTM 冻结图,它需要 10 个序列,每个输入序列有 10 个长度为 2002 的向量。 我的代码在 python 中工作,但我不知道如何在 C++ 中做同样的事情。 如何将我的向量序列转换为 LSTM 就绪的张量序列?

代码:

/// concatenate vector 1 and vector 2 features
std::vector<float> vecOne_vecTwo_concat;
/// preallocate memory
vecOne_vecTwo_concat.reserve(vecOne.size() + vecTwo.size());
/// concatenate (first half is vecOne; second half is vecTwo)
/// add vecOne
vecOne_vecTwo_concat.insert(vecOne_vecTwo_concat.end(),
 vecOne.begin(), vecOne.end());
/// add vecTwo
vecOne_vecTwo_concat.insert(vecOne_vecTwo_concat.end(),
 vecTwo.begin(), vecTwo.end() );

/// append to vector of features
sequence_vector_.push_back(vecOne_vecTwo_concat);

/// check if we have enough sequences to make a classification
/// here n_rnn_steps_ is 10
/// each vector in this sequence is of length 2002
/// so we have 10 vectors, each of length 2002
if (sequence_vector_.size() == n_rnn_steps_) 

  /* Here we feed the concatenated vector sequence into
     the session running the LSTM graph
  */

  /// reset vector after we have feed it into the session
  sequence_vector_.clear();

【问题讨论】:

【参考方案1】:

您可以作为指针直接访问创建的张量的内存。

Tensor aTensor(DT_FLOAT, TensorShape( sequenceLength ));
float *p = aTensor.flat<float>().data();

然后您可以将数据复制到该内存或使用 memcpy。

【讨论】:

以上是关于在 Tensorflow C++ 中将浮点向量传递给张量的主要内容,如果未能解决你的问题,请参考以下文章

我们如何在 C++ 中将二维数组/向量作为函数参数传递? [复制]

如何在 Swift 中将浮点数组保存为 txt 文件

如何在pybind11中将共享指针列表传递给c++对象

在汇编中将无符号字符转换为浮点数(为浮点向量计算做准备)

在 C++ 中将字符串转换为双精度

带有浮点索引的 C++ 数组/向量