所以,让我说我有一个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&#39;到Eigen :: TensorMap,16&gt; :: Scalar {aka float}&#39;在任务中
当我尝试将T转换为TensorMap时,我得到更多错误。
我在这里缺少什么?
答案 0 :(得分:0)
我认为问题是你使用'.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>());
}