神经网络ml-ANN的改变【opencv2.4.10——>opencv3.4.4】

opencv2.4.10神经网络api的使用:

#include <opencv2/ml/ml.hpp>    

//创建:
CvANN_MLP bp; 
//下载
bp.load("test.xml")
//预测
bp.predict(in,out)

/*定义神经网络及参数*/
 CvANN_MLP bp; //bp网络
 CvANN_MLP_TrainParams params; //bp网络参数
 params.train_method = CvANN_MLP_TrainParams::BACKPROP;		//使用简单的BP算法,还可使用RPROP
params.bp_dw_scale = 0.1;
 params.bp_moment_scale = 0.1;
 //params.term_crit=cvTermCriteria(CV_TerMCrIT_ITER+CV_TERMCRIT_EPS,5000,0.01);

	/*设置网络层数,训练数据*/
        /*BACKPROP表示使用back-propagation的训练方法,使用BACKPROP有两个相关参数:bp_dw-scale,bp_moment_scale
          RPROP即最简单的propagation训练方法,使用PRPOP有四个相关参数:rp_dw0,rp-dw_plus,rp_dw_minus,rp_dw_min,rp_dw_max
         一个是权值更新率bp_dw_scale和权值更新冲量bp_moment_scale。
         这两个量一般情况设置为0.1就行了;太小了网络收敛速度会很慢,太大了可能会让网络越过最小值点
Mat layerSizes = (Mat_<int>(1, 3) << IN_Dimension,HID_LAYERS,OUT_Dimension);//含有两个隐含层的网络结构,输入、输出层各3个节点
bp.create(layerSizes, CvANN_MLP::SIGMOID_SYM);//激活函数为SIGMOID函数,还可使用高斯函数(CvANN_MLP::GAUSSIAN),阶跃函数(CvANN_MLP::IDENTITY)

//训练
bp.train(trainingDataMat, labelsMat, Mat(), Mat(), params);//训练的接口train()

bp.save(bpxml);//存储模型

opencv3.4.4

 
        /*定义神经网络及参数*/
        Mat layerSizes = (Mat_<int>(1, 3) << IN_Dimension,HID_LAYERS,OUT_Dimension);//含有两个隐含层的网络结构,输入、输出层各3个节点
        /*layerSizes设置了有两个隐含层的网络结构:输入层,两个隐含层,输出层。输入层和输出层节点数均为2,中间隐含层每层有两个节点
          create第二个参数可以设置每个神经节点的激活函数,默认为CvANN_MLP::SIGMOID_SYM
        */
        bp->setLayerSizes(layerSizes);//设置层数
        bp->setActivationFunction(ANN_MLP::SIGMOID_SYM, 0.1, 0.1);//激活函数
        bp->setTrainMethod(ANN_MLP::BACKPROP, 0.1, 0.1);//训练方法

        //激活函数为SIGMOID函数,还可使用高斯函数(CvANN_MLP::GAUSSIAN),阶跃函数(CvANN_MLP::IDENTITY)
        
        **//训练**
        Ptr<TrainData> trainData = TrainData::create(trainingDataMat, ROW_SAMPLE, labelsMat);//创建训练数据,ROW_SAMPLE表示data中每行为一个样本
        bp->train(trainData);//训练的接口train()

        bp->save(bpxml);//存储模型

        cout << "训练完成!"<<endl;
 
	Ptr<ANN_MLP> bp = ANN_MLP::load("test.xml");//创建并加载保存的网络

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值