Я получаю некоторый Eigen :: TensorMap из выходного вектора из сеанса тензорного потока в C ++.Я хочу выполнить некоторые операции с Eigen :: TensorMap (изменить и конкатовать и т. Д.).
Однако мои коды не могут быть скомпилированы из-за какой-то странной ошибки.Я попытался воспроизвести его в чистом коде Eigen3.
#include <unsupported/Eigen/CXX11/Tensor>
using Eigen::Tensor;
using Eigen::TensorMap;
using Eigen::TensorRef;
using std::vector;
int main() {
int storage[128];
TensorMap<Tensor<int, 4>> t_4d(storage, 2, 4, 2, 8);
vector<TensorRef<Tensor<int,2>>> reshapedTensors;
std::array<int, 2> shape{ 16,8 };
auto re_op = t_4d.reshape(shape);
reshapedTensors.push_back(re_op);
return 0;
}
В соответствии с Eigen Doc , возвращаемый тип функции изменения формы - это собственная операция, она будет лениво вычисляться.TensorRef - это оболочка всех тензорных операций.
Этот фрагмент кода будет жаловаться на то, что:
Код серьезности Описание Ошибка состояния подавления строки файла проекта C2679 бинарный '=': не найден оператор, который принимает правый операнд типа 'const std:: array '(или нет приемлемого преобразования) testEigen D: \ Programming \ cpp library \ eigen-eigen-323c052e1731 \ unsupported \ Eigen \ CXX11 \ src \ Tensor \ TensorRef.h 49