我有一个标签矩阵,用于训练大小为 (1 x 5) 的 SVM。5 个标签用于 5 个图像。
现在,问题在于,带有训练数据的数据矩阵的大小为 (1 x 65000)。事实上,这个矩阵的大小必须是(5 x 13000);即 13000 行的 5 列(图像)。
我尝试重塑,但没有奏效。我可以得到一些帮助如何更改矩阵大小。
谢谢
我有一个标签矩阵,用于训练大小为 (1 x 5) 的 SVM。5 个标签用于 5 个图像。
现在,问题在于,带有训练数据的数据矩阵的大小为 (1 x 65000)。事实上,这个矩阵的大小必须是(5 x 13000);即 13000 行的 5 列(图像)。
我尝试重塑,但没有奏效。我可以得到一些帮助如何更改矩阵大小。
谢谢
这里最简单的做法是创建一个新矩阵并一次复制一个元素。我不确定您的矩阵的结构是什么,但是假设第一个训练示例对应于您当前在形状不正确的矩阵的条目 1-5 中的内容。
cv::Mat training_data = new cv::Mat(13000, 5, CV_32F);
for (unsigned int row = 0; row < training_data.rows; ++row)
{
for (unsigned int col = 0; col < training_data.cols; ++col)
{
training_data.at<float>(row, col) = old_training_data.at<float>(1, (training_data.cols * row) + col);
}
}
然后释放旧的训练数据矩阵,你就有了一个全新的(形状正确!)矩阵。