从std :: vector创建tensorflow :: tensor的最有效方法

rAy*_*yyy 5 c++ tensorflow

所以我的问题是要知道是否有一种方法可以将值直接从vector(但我们也可以考虑array)传递给a tensorflow::tensor

我知道的唯一方法是一个一个地复制每个值。

示例(2D矢量)

tensorflow::Tensor input(tensorflow::DT_FLOAT, tensorflow::TensorShape({50, 20})); 
auto input_map = input.tensor<float, 2>();


for (int b = 0; b < 50; b++) {
  for (int c = 0; c < 20; c++) {
    input_map(b, c) = (vector_name)[b][c];
  }
}
Run Code Online (Sandbox Code Playgroud)

有更方便的方法吗?

例如arrayvector

int x[3] = {1, 2, 3};
std::vector<int> v(x, x + sizeof x / sizeof x[0]);
Run Code Online (Sandbox Code Playgroud)

小智 6

这个怎么样? std::copy_n(vec.begin(), vec.size(), input.flat<float>().data())


小智 -6

你有没有尝试过tf.convert_to_tensor?也许像tf.convert_to_tensor(value, as_ref=True)

https://www.tensorflow.org/versions/r0.11/api_docs/python/framework.html#convert_to_tensor

  • 恐怕它只适用于 python api,我说的是 c++。我查了一下,没有找到c++中的convert_to_tensor。 (4认同)