具有不同等级的特征张量向量

时间:2017-03-01 14:15:40

标签: c++ tensorflow eigen eigen3

我的问题:是否有可能创建一个具有不同等级的本征张量向量?

我的目标是能够创建一个包含其类型取值为Eigen::MatrixXd, Tensor3d, Tensor4d,..., Tensor10d(下面定义)的对象的向量。对象可以有不同的类型。

提前感谢您的帮助!

#include <iostream>
#include <vector>
#include <Eigen/Dense>
#include <unsupported/Eigen/CXX11/Tensor>

typedef Eigen::Tensor< double , 3 > Tensor3d;
typedef Eigen::Tensor< double , 4 > Tensor4d;
typedef Eigen::Tensor< double , 5 > Tensor5d;
typedef Eigen::Tensor< double , 6 > Tensor6d;
typedef Eigen::Tensor< double , 7 > Tensor7d;
typedef Eigen::Tensor< double , 8 > Tensor8d;
typedef Eigen::Tensor< double , 9 > Tensor9d;
typedef Eigen::Tensor< double , 10 > Tensor10d;

class MyClass
{
private:
    std::vector< TensorXd > Tensors;
public:
    MyClass();
};

1 个答案:

答案 0 :(得分:2)

由于您标记了此问题[tensorflow],我假设您使用Eigen::Tensor作为TensorFlow计划的一部分。 answer建议使用包装器类来保存张量的Aziuth pointed in their comment,幸运的是TensorFlow带有自己的包装类:tensorflow::Tensor

您可以创建std::vector<tensorflow::Tensor>,使用TensorFlow的分配器为不同的张量分配内存,并使用tensorflow::Tensor::tensor()方法访问包装的Eigen::Tensor对象。