-
tensor的官网教程
https://eigen.tuxfamily.org/dox/unsupported/eigen_tensors.html -
参考链接
https://blog.csdn.net/a2824256/article/details/121328952 -
slice操作
https://blog.csdn.net/qq_35007834/article/details/122627402 -
rowmajor or colmajor
-
reshape
#include <iostream>
#include <unsupported/Eigen/CXX11/Tensor>
int main()
{
// 定义一个一维数组,在下面将其转换为2x2的tensor
float arr[] = { 0.1, 0.2, 0.3, 0.4 };
// 定义转换的Eigen::TensorMap,同时做了一个reshape操作
// 如果arr是个vector, 则使用arr.data()
auto mapped_t = Eigen::TensorMap<Eigen::Tensor<float, 2>>(arr, 2, 2);
std::cout << typeid(mapped_t).name() << std::endl;
// 强制转换为Tensor
auto result = Eigen::Tensor<float, 2>(mapped_t);
std::cout << typeid(result).name() << std::endl;
std::cout << result << std::endl;
}
————————————————
版权声明:本文为CSDN博主「Alex-Leung」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/a2824256/article/details/121328952
- shuffle
- chip
- pad
- 指向数组的指针转成tensor
// 定义一个向量
std::vector<float> data = { 1, 2, 1, 2, 1, 2};
// 转换到Eigen::TensorMap,三个参数依次为:类型:float,维度:2, 存储模式:行优先
auto mapped_X_ = Eigen::TensorMap<Eigen::Tensor<float, 2, Eigen::RowMajor>>
// 指针data,第一维数目:2,第二维数目: 3
(&data[0], 2, 3 );
// 再转换到Eigen::Tensor,参数同上
auto eigen_X_ = Eigen::Tensor<float,2, Eigen::RowMajor>(mapped_X_);
// 第一维大小,行数:2;第二维大小,列数:3
Tensor X_(DT_FLOAT, TensorShape({ 2, 3 }));
// 数据类型:float,维度:2
X_.tensor<float, 2>() = eigen_X_;