巧借死循环使用if跳出求得想要范围内的神经网络【MATLAB】

例如:我需要这个神经网络输出值符合我想要的范围内,我又不想一直点运行。

此时可以使用如下构架:

while 1==1

if 要求
break
end

end

例子:

clc
clear
close all 


while 1==1
%%

load data_xy.mat
data_y = data(1:50000,1:1);
data_x = data(1:50000,2:2);
%构建
train_x = [data_x]';%数据
train_y = [data_y]';%标签

%构建网络
net = newff(train_x,train_y, [10], { 'logsig' 'purelin' } , 'traingdx' , 'learngdm') ;%输入数据为 特征数*数据个数,输出为 类别向量*数据个数
net.trainParam.showWindow = 0;% 不显示窗口
net.trainparam.epochs = 5000;%允许最大训练步数500步
net.trainparam.goal = 0.00000001 ;%训练目标最小误差0.01
net.trainParam.lr = 0.0000001 ;%学习速率0.05
%% 开始训练
net = train( net, train_x,train_y);
close all 
%% 仿真测试
predict_y = sim( net,train_x) ;

SST = sum((train_y-mean(train_y)).^2);
SSR = sum((predict_y'-mean(train_y)).^2);

R2 = SSR./SST

if 0.998 <R2&&R2< 1.002
    save good2.mat
    x = 1:50000;
    plot(x,train_y,'r',x,predict_y,'g');
    break
end
end
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容