我的问题:是否有可能创建一个具有不同等级的本征张量向量?
我的目标是能够创建一个包含其类型取值为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();
};
答案 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
对象。