Есть несколько вариантов. Если тензор действительно небольшой вектор, как в вашем случае, вы можете сделать следующее:
tensorflow::Tensor a(tensorflow::DT_FLOAT, tensorflow::TensorShape(3));
a.vec<float>()(0) = 1.0f;
a.vec<float>()(1) = 4.0f;
a.vec<float>()(2) = 2.0f;
Если вы хотите, чтобы построить немного больше и/или многомерный тензор, то tensorflow::ops::Input::Initializer
объявлен в tensorflow/cc/framework/ops.h
имеет много конструкторы, которые позволяют вам построить Tensor
из различных типов констант C++, таких как простые примитивные константы и вложенные списки инициализаторов, представляющие многомерный массив.
Например, если вы хотите построить 2x2
матрицу, вы можете сделать следующее:
#include "tensorflow/cc/framework/cc/ops.h"
tensorflow::ops::Input::Initializer a({{1, 2}, {3, 4}});
// a.tensor will be a Tensor with type DT_INT32 and shape {2, 2}.
Эй. Я попробовал первый пример и tensorflow :: TensorShape (3) дает мне синтаксическую ошибку. #include "tensorflow/cc/framework/cc/ops.h" говорит мне, что этого не существует. Это изменилось? (Я новичок в C++), тензор потока :: TensorShape ({3}) компилируется, но я не уверен, что это работает. – CodingYourLife
update: нашел способ проверить, работает ли shadoworflow :: TensorShape ({3}) – CodingYourLife
Должен быть #include "tensorflow/cc/framework/ops.h", а затем tensorflow :: Input :: Initializer a ({ {1, 2}, {3, 4}}); – jshapy8