用matlab训练之后,想把输出的权值和阈值矩阵导出到qt里面去,在matlab里面预测的误差是很小的,但是在qt里面按照公式算的时候预测的误差就很大。
上面是我在qt里面的一个输出参数的代码,先输入矩阵归一化,然后输入权值矩阵×输入矩阵-隐层阈值,然后激活函数tansig一下,再乘隐层权重后减去输出阈值,再tansig再反归一化。
这有什么问题吗?感觉自己写的没错啊
用matlab训练之后,想把输出的权值和阈值矩阵导出到qt里面去,在matlab里面预测的误差是很小的,但是在qt里面按照公式算的时候预测的误差就很大。
上面是我在qt里面的一个输出参数的代码,先输入矩阵归一化,然后输入权值矩阵×输入矩阵-隐层阈值,然后激活函数tansig一下,再乘隐层权重后减去输出阈值,再tansig再反归一化。
这有什么问题吗?感觉自己写的没错啊
第一步就错了,同学!!!
你在matlab里面训练好的数据,它的归一化输入跟你现在qt里面归一化的尺度都变了。你现在的qt里面输入的数据,必须按照matlab当时训练时的归一化特征来输入,然后反归一化也是必须按照matlab当时训练数据的那个进行反归一化,而不是用现在qt里面这组数据进行反归一化。不知道你能不能get到我的点。
即:原先matlab训练数据和测试数据的时候,那组数据的min max 以及方差都要移植到现在的qt里面,qt本身输入的数据不能自身归一化,得用同一个尺度来归一化(即来自matlab的那个尺度)。