Если вы посмотрите на Eigen документацию , вы заметите, что Eigen::VectorXf
на самом деле typedef
для Eigen::Matrix<float, Eigen::Dynamic, 1>
.
Тип y_pred
Класс Eigen::Matrix
является производным от шаблонного класса Eigen::MatrixBase
, из которого происходит функция-член array()
.Этот метод возвращает объект-оболочку, который в принципе можно рассматривать как Eigen::Array
.Применение оператора сравнения к результату array()
дает Eigen::Array
из bool
.
Преобразование в вектороподобный тип
В документации есть раздел посвященный использованию Eigen::Array
класса.Один из подразделов, а именно Преобразование между выражениями массива и матрицы , представляет особый интерес в контексте вашего вопроса.Там можно прочитать, что Eigen::Array
можно преобразовать в Eigen::Matrix
с помощью метода matrix()
.
Используя приведенные выше наблюдения, вы сможете преобразовать y_pred
в какой-то вектор, возвращая y_pred.matrix()
вместо static_cast<Eigen::VectorXf>(y_pred)
.Тип возвращаемого значения, вероятно, будет примерно таким: Eigen::Matrix<bool, Eigen::Dynamic, 1>
.
. Из-за того, что матрицы bool
менее распространены в операциях линейной алгебры, с ними не связано typedef
.