简体   繁体   English

如何用C ++填充张量

[英]How to fill a tensor in C++

I'm creating a tensor like this: 我正在创建一个像这样的张量:

tensorflow::Tensor a(tensorflow::DT_FLOAT, tensorflow::TensorShape());

I know how to fill a scalar value: 我知道如何填写标量值:

a.scalar<float>()() = 8.0;

But I don't know how to fill a tensor like [1, 4, 2]. 但我不知道如何填补像[1,4,2]那样的张量。

There are a few options. 有几个选择。 If the tensor is really a small vector, like in your case, you can do the following : 如果张量实际上是一个小向量,就像你的情况一样,你可以做到以下几点:

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;

If you want to construct a slightly larger and/or multi-dimensional tensor, then tensorflow::ops::Input::Initializer declared in tensorflow/cc/framework/ops.h has many constructors that lets you construct a Tensor from various kinds of C++ constants such as simple primitive constants and nested initializer lists representing a multi-dimensional array. 如果你想构造一个稍大和/或多维的张量,那么在tensorflow/cc/framework/ops.h声明的tensorflow::ops::Input::Initializer有许多构造函数可以让你从各种类型构造一个Tensor C ++常量,例如简单的原始常量和表示多维数组的嵌套初始化列表。

For example, if you want to construct a 2x2 matrix, you can do the following : 例如,如果要构建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}.

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM