警告: PREMNMX is an obsolete function.解决办法

        使用Matlab做神经网络的时候经常会出这个警告,主要是PREMNX这个归一化函数在matlab版本更新中已经被别的函数取代了,但在之前学习过程中,许多教程里都还是沿用着这个函数,这里分享一下改写办法。

        使用mapminmax函数来代替premnx来进行归一化处理即可。

        mapminmax函数常用的几种方式:

[Y,PS]  = mapminmax(X,YMIN,YMAX)

%X为待归一化的矩阵,Y为归一化后的矩阵。YMIN,YMAX为归一化后的函数区间,通常取[0,1]或[-1,1]。PS为归一化处理的过程设置,若只想对一组数据进行归一化查看结果可以不必理会;但在反归一化和对另一个矩阵使用相同准则归一化时会用到。

Z  =  mapminmax('apply' , X , PS)

%同样,X为待归一化的矩阵,Z为归一化后的矩阵。只是归一化准则使用的是PS。

X  =  mapminmax('reverse' , Y , PS)

%对Y进行反归一化,使用准则PS,得到原始数据X。

        对神经网络中代码的更改如下:

%原代码

[pn,minp,maxp]=premnmx(p);   
[tn,mint,maxt]=premnmx(t);   

%更改后的代码

[pn,ps] = mapminmax(p);
[tn,ts] = mapminmax(t);

        经过网络训练后,反归一化代码更改如下:

%原代码:

a=postmnmx(an,mint,maxt);

%更改后:

a = mapminmax('reverse',an,ts);

修改后运行神经网络便不会产生警告了,另外附上一个使用该方式进行神经网络训练的使用流程

% p为输入变量,t为输出变量,train进行网络训练
[pn,ps] = mapminmax(p);
[tn,ts] = mapminmax(t);
net = train(net,pn,tn);
% 通过sim运行网络得到输出,并返归一化得到初始值
an = sim(net,pn);
a = mapminmax('reverse',an,ts);
% 使用测试集对网络进行测试。
pnewn = mapminmax('apply',pnew,ps);
anewn = sim(net,pnewn);
anew = mapminmax('reverse',anewn,ts);

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值