我想用Eigen读取MNIST数据集,并用矩阵表示每个文件。我希望在运行时确定矩阵大小,因为训练集和测试具有不同的大小。
Map<Matrix<uchar,rows,cols,RowMajor>> MNIST_dataset((uchar*)*_dataset);
但是得到以下错误:
NIST_Read.cpp:43:26: error: the value of 'rows' is not usable in a constant expression
Map<Matrix<uchar,rows,cols,RowMajor>> MNIST_dataset((uchar*)*_dataset);
^~~~
可以这样使用Eigen :: Map吗?
答案 0 :(得分:2)
我们需要知道rows
是什么,但是如果你想将它用作模板参数,那么它必须是constexpr
variable(或文字整数的宏,但是让我们来看看不这样做)。但是,您说您需要在运行时确定矩阵大小,因此您需要使用Dynamic
作为数字或行,并在构造函数中指定值:
Map<Matrix<uchar,Dynamic,cols,RowMajor>> MNIST_dataset((uchar*)*_dataset, rows, cols);