📄 lmtrain.c
字号:
* lr = 0.001; %学习速率 0.001
*/
mlfAssign(&lr, _mxarray6_);
/*
* lr_inc = 0.001; %学习速率增加比率 0.001
*/
mlfAssign(&lr_inc, _mxarray6_);
/*
* lr_idec = 10; %学习速率减少比率 10
*/
mlfAssign(&lr_idec, _mxarray7_);
/*
* mom_const = 0.1; %动量常数 0.1
*/
mlfAssign(&mom_const, _mxarray8_);
/*
* err_ratio = 1e10; %最大误差比率 1e10
*/
mlfAssign(&err_ratio, _mxarray9_);
/*
* else
*/
} else {
/*
* df=TrainPara(1); %显示间隔次数 25
*/
mlfAssign(&df, mclIntArrayRef1(mclVa(TrainPara, "TrainPara"), 1));
/*
* me=TrainPara(2); %最大循环次数 1000
*/
mlfAssign(&me, mclIntArrayRef1(mclVa(TrainPara, "TrainPara"), 2));
/*
* eg=TrainPara(3); %目标误差 0.02
*/
mlfAssign(&eg, mclIntArrayRef1(mclVa(TrainPara, "TrainPara"), 3));
/*
*
* lr=TrainPara(4); %学习速率 0.001
*/
mlfAssign(&lr, mclIntArrayRef1(mclVa(TrainPara, "TrainPara"), 4));
/*
* lr_inc=TrainPara(5); %学习速率增加比率 0.001
*/
mlfAssign(&lr_inc, mclIntArrayRef1(mclVa(TrainPara, "TrainPara"), 5));
/*
* lr_idec=TrainPara(6); %学习速率减少比率 10
*/
mlfAssign(&lr_idec, mclIntArrayRef1(mclVa(TrainPara, "TrainPara"), 6));
/*
* mom_const=TrainPara(7); %动量常数 0.1
*/
mlfAssign(
&mom_const, mclIntArrayRef1(mclVa(TrainPara, "TrainPara"), 7));
/*
* err_ratio=TrainPara(8); %最大误差比率 1e10
*/
mlfAssign(
&err_ratio, mclIntArrayRef1(mclVa(TrainPara, "TrainPara"), 8));
/*
* end
*/
}
/*
* % 输入层到中间层的传递函数
* if (length(InputFun)==0)
*/
if (mclLengthInt(mclVa(InputFun, "InputFun")) == 0) {
/*
* InputFun = 'tansig';
*/
mlfAssign(&InputFun, _mxarray10_);
/*
* end
*/
}
/*
* % 中间层到输出层的传递函数
* if (length(OutputFun)==0)
*/
if (mclLengthInt(mclVa(OutputFun, "OutputFun")) == 0) {
/*
* OutputFun = 'purelin';
*/
mlfAssign(&OutputFun, _mxarray12_);
/*
* end
*/
}
/*
* tp=[df me eg lr lr_inc lr_idec mom_const err_ratio];
*/
mlfAssign(
&tp,
mlfHorzcat(
mclVv(df, "df"),
mclVv(me, "me"),
mclVv(eg, "eg"),
mclVv(lr, "lr"),
mclVv(lr_inc, "lr_inc"),
mclVv(lr_idec, "lr_idec"),
mclVv(mom_const, "mom_const"),
mclVv(err_ratio, "err_ratio"),
NULL));
/*
* %tp=[df me eg 0.001 0.001 10 0.1 1e10];
*
* frin_para=fopen(sprintf('input_para%s%s',ModelNo,'.txt'),'r'); %输入数据文件
*/
mlfAssign(
&frin_para,
mlfFopen(
NULL,
NULL,
mlfSprintf(
NULL, _mxarray14_, mclVa(ModelNo, "ModelNo"), _mxarray16_, NULL),
_mxarray18_,
NULL));
/*
* frout_para=fopen(sprintf('output_para%s%s',ModelNo,'.txt'),'r'); %输出数据文件
*/
mlfAssign(
&frout_para,
mlfFopen(
NULL,
NULL,
mlfSprintf(
NULL, _mxarray20_, mclVa(ModelNo, "ModelNo"), _mxarray16_, NULL),
_mxarray18_,
NULL));
/*
*
* [p,count]=fscanf(frin_para,'%f',[InputDim,data_num]); %取输入数据
*/
mlfAssign(
&p,
mlfFscanf(
&count,
mclVv(frin_para, "frin_para"),
_mxarray22_,
mlfHorzcat(
mclVv(InputDim, "InputDim"), mclVv(data_num, "data_num"), NULL)));
/*
* [t,count]=fscanf(frout_para,'%f',[OutputDim,data_num]); %取输出数据
*/
mlfAssign(
&t,
mlfFscanf(
&count,
mclVv(frout_para, "frout_para"),
_mxarray22_,
mlfHorzcat(
mclVv(OutputDim, "OutputDim"), mclVv(data_num, "data_num"), NULL)));
/*
*
* fclose(frin_para);
*/
mclAssignAns(&ans, mlfFclose(mclVv(frin_para, "frin_para")));
/*
* fclose(frout_para);
*/
mclAssignAns(&ans, mlfFclose(mclVv(frout_para, "frout_para")));
/*
*
*
* [r,q]=size(p); [s2,q]=size(t);
*/
mlfSize(mlfVarargout(&r, &q, NULL), mclVv(p, "p"), NULL);
mlfSize(mlfVarargout(&s2, &q, NULL), mclVv(t, "t"), NULL);
/*
*
* [w1,b1]=rands(MidDim,r);
*/
mlfAssign(&w1, mlfNRands(2, &b1, mclVv(MidDim, "MidDim"), mclVv(r, "r")));
/*
* [w2,b2]=rands(s2,MidDim);
*/
mlfAssign(&w2, mlfNRands(2, &b2, mclVv(s2, "s2"), mclVv(MidDim, "MidDim")));
/*
*
* NNTWARN OFF
*/
mlfNntwarn(_mxarray0_);
/*
* [w1,b1,w2,b2,epochs,errors]=trainlm(w1,b1,InputFun,w2,b2,OutputFun,p,t,tp);
*/
mlfAssign(
&w1,
mlfTrainlm(
&b1,
&w2,
&b2,
&epochs,
&errors,
NULL,
NULL,
mclVv(w1, "w1"),
mclVv(b1, "b1"),
mclVa(InputFun, "InputFun"),
mclVv(w2, "w2"),
mclVv(b2, "b2"),
mclVa(OutputFun, "OutputFun"),
mclVv(p, "p"),
mclVv(t, "t"),
mclVv(tp, "tp"),
NULL,
NULL,
NULL));
/*
*
* %将参数值写入文件
* fww1=fopen(sprintf('w%s%s',ModelNo,'1.dat'),'w');
*/
mlfAssign(
&fww1,
mlfFopen(
NULL,
NULL,
mlfSprintf(
NULL, _mxarray24_, mclVa(ModelNo, "ModelNo"), _mxarray26_, NULL),
_mxarray28_,
NULL));
/*
* fwb1=fopen(sprintf('b%s%s',ModelNo,'1.dat'),'w');
*/
mlfAssign(
&fwb1,
mlfFopen(
NULL,
NULL,
mlfSprintf(
NULL, _mxarray30_, mclVa(ModelNo, "ModelNo"), _mxarray26_, NULL),
_mxarray28_,
NULL));
/*
* fww2=fopen(sprintf('w%s%s',ModelNo,'2.dat'),'w');
*/
mlfAssign(
&fww2,
mlfFopen(
NULL,
NULL,
mlfSprintf(
NULL, _mxarray24_, mclVa(ModelNo, "ModelNo"), _mxarray32_, NULL),
_mxarray28_,
NULL));
/*
* fwb2=fopen(sprintf('b%s%s',ModelNo,'2.dat'),'w');
*/
mlfAssign(
&fwb2,
mlfFopen(
NULL,
NULL,
mlfSprintf(
NULL, _mxarray30_, mclVa(ModelNo, "ModelNo"), _mxarray32_, NULL),
_mxarray28_,
NULL));
/*
*
* fprintf(fww1,'%9.4f ',w1);
*/
mclAssignAns(
&ans,
mlfNFprintf(0, mclVv(fww1, "fww1"), _mxarray34_, mclVv(w1, "w1"), NULL));
/*
* fprintf(fwb1,'%9.4f ',b1);
*/
mclAssignAns(
&ans,
mlfNFprintf(0, mclVv(fwb1, "fwb1"), _mxarray34_, mclVv(b1, "b1"), NULL));
/*
* fprintf(fww2,'%9.4f\n',w2);
*/
mclAssignAns(
&ans,
mlfNFprintf(0, mclVv(fww2, "fww2"), _mxarray36_, mclVv(w2, "w2"), NULL));
/*
* fprintf(fwb2,'%9.4f\n',b2);
*/
mclAssignAns(
&ans,
mlfNFprintf(0, mclVv(fwb2, "fwb2"), _mxarray36_, mclVv(b2, "b2"), NULL));
/*
*
* fclose(fww1);
*/
mclAssignAns(&ans, mlfFclose(mclVv(fww1, "fww1")));
/*
* fclose(fwb1);
*/
mclAssignAns(&ans, mlfFclose(mclVv(fwb1, "fwb1")));
/*
* fclose(fww2);
*/
mclAssignAns(&ans, mlfFclose(mclVv(fww2, "fww2")));
/*
* fclose(fwb2);
*/
mclAssignAns(&ans, mlfFclose(mclVv(fwb2, "fwb2")));
/*
*
* ferr=fopen(sprintf('lm_err%s%s',ModelNo,'.dat'),'w');
*/
mlfAssign(
&ferr,
mlfFopen(
NULL,
NULL,
mlfSprintf(
NULL, _mxarray38_, mclVa(ModelNo, "ModelNo"), _mxarray40_, NULL),
_mxarray28_,
NULL));
/*
* fprintf(ferr,'%10.6f\n',errors);
*/
mclAssignAns(
&ans,
mlfNFprintf(
0, mclVv(ferr, "ferr"), _mxarray42_, mclVv(errors, "errors"), NULL));
/*
* fclose(ferr);
*/
mclAssignAns(&ans, mlfFclose(mclVv(ferr, "ferr")));
/*
*
* cd(olddir);
*/
mclAssignAns(&ans, mlfNCd(0, mclVv(olddir, "olddir")));
/*
*
* retstr=epochs;
*/
mlfAssign(&retstr, mclVv(epochs, "epochs"));
/*
* close all;
*/
mclAssignAns(&ans, mlfNClose(0, _mxarray44_, NULL));
mclValidateOutput(retstr, 1, nargout_, "retstr", "lmtrain");
mxDestroyArray(ans);
mxDestroyArray(olddir);
mxDestroyArray(InputDim);
mxDestroyArray(OutputDim);
mxDestroyArray(MidDim);
mxDestroyArray(data_num);
mxDestroyArray(df);
mxDestroyArray(me);
mxDestroyArray(eg);
mxDestroyArray(lr);
mxDestroyArray(lr_inc);
mxDestroyArray(lr_idec);
mxDestroyArray(mom_const);
mxDestroyArray(err_ratio);
mxDestroyArray(tp);
mxDestroyArray(frin_para);
mxDestroyArray(frout_para);
mxDestroyArray(p);
mxDestroyArray(count);
mxDestroyArray(t);
mxDestroyArray(r);
mxDestroyArray(q);
mxDestroyArray(s2);
mxDestroyArray(w1);
mxDestroyArray(b1);
mxDestroyArray(w2);
mxDestroyArray(b2);
mxDestroyArray(epochs);
mxDestroyArray(errors);
mxDestroyArray(fww1);
mxDestroyArray(fwb1);
mxDestroyArray(fww2);
mxDestroyArray(fwb2);
mxDestroyArray(ferr);
mxDestroyArray(DataDir);
mxDestroyArray(OutputFun);
mxDestroyArray(InputFun);
mxDestroyArray(TrainPara);
mxDestroyArray(NetPara);
mxDestroyArray(ModelNo);
mclSetCurrentLocalFunctionTable(save_local_function_table_);
return retstr;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -