[英]In Tensorflow's C++ API, how do I use an Eigen Tensor to set my Tensorflow Tensor?
所以我想说我有一个4D Eigen :: Tensor T.
同样地,我也有一个4D Tensorflow :: Tensor X,其形状与T相同
int size = T.dimension(0);
int rows = T.dimension(1);
int cols = T.dimension(2);
int channels = T.dimension(3);
TensorShape TS;
TS.AddDim(size);
TS.AddDim(rows);
TS.AddDim(cols);
TS.AddDim(size);
Tensor x( DT_FLOAT, TS);
现在我想把数据放在T中的x中。
所以我尝试做:
x.matrix<float>()() = T;
但是当我做的时候,编译器会对我大喊:
无法将'Eigen :: Tensor'转换为'Eigen :: TensorMap,16> :: Scalar {aka float}'
当我尝试将T转换为TensorMap时,我得到更多错误。
我在这里错过了什么?
我认为问题是你使用'.matrix',它只返回2d矩阵。
template <typename T>
typename TTypes<T>::Matrix matrix() {
return tensor<T, 2>();
}
你应该使用'.tensor',它可以返回Nd矩阵。
template <typename T, size_t NDIMS>
typename TTypes<T, NDIMS>::Tensor Tensor::tensor() {
CheckTypeAndIsAligned(DataTypeToEnum<T>::v());
return typename TTypes<T, NDIMS>::Tensor(base<T>(),
shape().AsEigenDSizes<NDIMS>());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.