繁体   English   中英

在Tensorflow的C ++ API中,如何使用Eigen Tensor设置Tensorflow Tensor?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM