目录
一、C++项目移植
1 归一化以及反归一化
1.1 对vector归一化
vector<double> normalize(vector<double>& data)//归一化,输入一组数据,遍历取出最大值与最小值,然后进行计算
{
double minvalue = data[0];
double maxvalue = data[0];
for (int i = 0; i < data.size(); i++)
{
if (minvalue > data[i])
{
minvalue = data[i];
}
if (maxvalue < data[i])
{
maxvalue = data[i];
}
}
double range = maxvalue - minvalue;
for (int j = 0; j < data.size(); j++)
{
data[j] = (data[j] - minvalue) / range;
}
return { maxvalue , minvalue };
}
1.2 对matrix归一化
vector<double> normalize_matrix(vector<vector<double>>& matrix)
{
double maxvalue = matrix[0][0];
double minvalue = matrix[0][0];
for (const auto& row : matrix)
{
for (const auto& value : row)
{
minvalue = min(minvalue, value);
maxvalue = max(maxvalue, value);
}
}
double range = maxvalue - minvalue;
vector<vector<double>> normalize_matrix(matrix.size(), vector<double>(matrix[0].size(), 0));
for (int i = 0; i < matrix.size(); i++)
{
for (int j = 0; j < matrix[i].size(); j++)
{
matrix[i][j] = (matrix[i][j] - minvalue) / range;
}
}
return { minvalue,maxvalue };
}
1.3 对vector反归一化
vector<double> retorenormalize(vector<double>& data, double maxvalue, double minvalue)//反归一化,输入归一化后数据以及原始最大值与最小值,输出原始数据
{
vector<double> originaldata = {0.0};
originaldata.resize(data.size());
for (int i = 0; i < data.size(); i++)
{
originaldata[i] = data[i] * (maxvalue - minvalue) + minvalue;
}
return originaldata;
}
1.4 对matrix反归一化
vector<vector<double>> retorenormalize_matrix(vector<vector<double>>& matrix, double maxvalue, double minvalue)
{
int rows = 3;
int cols = 5;
vector<vector<double>> original_matrix(rows,vector<double>(cols,0.0));
for (int i = 0; i < matrix.size(); i++)
{
for (int j = 0; j < matrix[i].size(); j++)
{
original_matrix[i][j] = matrix[i][j] * (maxvalue - minvalue) + minvalue;
}
}
return original_matrix;
}
2 vector——matrix转换
vector<vector<double>> convertFloatToDouble(float* datanew, int rows, int cols) {
vector<std::vector<double>> date(rows, std::vector<double>(cols));
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
date[i][j] = static_cast<double>(datanew[i * cols + j]);
}
}
return date;
}
3 模型选择
后续继续填坑