⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lmtrain.c

📁 nnToolKit 神经网络工具包是基于 MATLAB 神经网络工具箱自行开发的一组神经网络算法函数库
💻 C
📖 第 1 页 / 共 2 页
字号:
         * 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 + -