在训练之前,对输入和目标进行缩放通常是有用的,这样它们总是落在指定的范围内。这个函数mapminmax
缩放输入和目标,使它们落在[- 1,1]范围内。下面的代码说明了如何使用这个函数。
[pn,ps] = mapminmax(p);[tn,ts] = mapminmax(t);Net = train(Net,pn,tn);
矩阵中给出了原始网络输入和目标p
而且t
.的规范化的输入和目标pn
而且tn
返回的所有函数都在区间[- 1,1]中。的结构ps
而且ts
包含设置,在本例中是原始输入和目标的最小值和最大值。在对网络进行了训练之后,将ps
应该使用设置来转换应用到网络的任何未来输入。它们有效地成为网络的一部分,就像网络权重和偏差一样。
如果mapminmax
用于缩放目标,则网络的输出将被训练产生范围为[- 1,1]的输出。要将这些输出转换回原始目标所使用的相同单位,请使用设置ts
.下面的代码模拟在前面代码中训练的网络,然后将网络输出转换回原始单元。
An = sim(net,pn);A = mapminmax('reverse',an,ts);
网络输出一个
对应于规范化的目标tn
.非标准化网络输出一个
和原来的目标在同一单位吗t
.
如果mapminmax
用于预处理训练集数据,然后当训练网络与新的输入一起使用时,它们应该用存储在设置中的训练集计算的最小值和最大值进行预处理ps
.下面的代码将一组新的输入应用到已经训练过的网络。
Pnewn = mapminmax('apply',pnew,ps);Anewn = sim(net,pnewn);renew = mapminmax('reverse', renew,ts);
对于大多数网络,包括feedforwardnet
,这些步骤是自动完成的,因此您只需要使用sim卡
命令。