【发布时间】:2016-09-28 02:55:40
【问题描述】:
所以我的问题是知道是否有办法将值从vector(但我们也可以考虑array)直接传递给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];
}
}
有更方便的方法吗?
例如array 到vector:
int x[3] = {1, 2, 3};
std::vector<int> v(x, x + sizeof x / sizeof x[0]);
【问题讨论】:
-
顺便说一句,是什么让你相信你的数组到向量 sn-p 没有复制任何东西? “高效”是指性能,还是方便?
-
我主要看性能。我虽然这样矢量会占用数组使用的内存,但我可能错了。或者例如相反的动作: int* pv = &v[0]; (从向量创建数组,对于这个我确信它不会复制)。但如果有更方便的东西我也很想看看。
-
int* pv=&v[0] 不创建数组。它将向量第一个元素的当前地址分配给一个指针(如果你做一些调整向量大小的事情,pv 很可能会变得无效,顺便说一句)。不,该向量构造函数不会创建数组的视图。它只是复制元素。
-
所以我想没有什么比这更有效了吗?在那种情况下更方便?
-
有这个构造函数Tensor::Tensor(Allocator* a, DataType type, const TensorShape& shape)。但我看不出 (Allocator* a) 是什么。
标签: c++ tensorflow