ANN神经网络

BP神经网络是ANN人工神经中的一种,常用的神经网络有BP、RBF、SOM、Hopfield等,总体来说ANN主要功能是模式识别和分类训练。

http://www.zybang.com/question/9f85427ac0c4d7abb4709b024704e713.html
人工神经网络模型主要考虑网络连接的拓扑结构、神经元的特征、学习规则等.目前,已有近40种神经网络模型,其中有反传网络、感知器、自组织映射、Hopfield网络、波耳兹曼机、适应谐振理论等.
ann:人工神经网络(Artificial Neural Networks)
bp:Back Propagation网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一.BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程.它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小.BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer).

void ANNTrain(Mat TrainData, Mat classes, int nNeruns)
{
    ANN.clear();
    Mat layers(1, 3, CV_32SC1);
    layers.at<int>(0) = TrainData.cols;
    layers.at<int>(1) = nNeruns;
    layers.at<int>(2) = numCharacter;
    ANN.create(layers, CvANN_MLP::SIGMOID_SYM, 1, 1);

    //Prepare trainClases
    //Create a mat with n trained data by m classes
    Mat trainClasses;
    trainClasses.create(TrainData.rows, numCharacter, CV_32FC1);
    for (int i = 0; i < trainClasses.rows; i++)
    {
        for (int k = 0; k < trainClasses.cols; k++)
        {
            //If class of data i is same than a k class
            if (k == classes.at<int>(i))
                trainClasses.at<float>(i, k) = 1;
            else
                trainClasses.at<float>(i, k) = 0;
        }
    }
    Mat weights(1, TrainData.rows, CV_32FC1, Scalar::all(1));

    //Learn classifier
    // ANN.train( TrainData, trainClasses, weights );

    //Setup the BPNetwork

    // Set up BPNetwork's parameters
    CvANN_MLP_TrainParams params;
    params.train_method = CvANN_MLP_TrainParams::BACKPROP;
    params.bp_dw_scale = 0.1;
    params.bp_moment_scale = 0.1;

    // params.train_method=CvANN_MLP_TrainParams::RPROP;
    // params.rp_dw0 = 0.1; 
    // params.rp_dw_plus = 1.2; 
    // params.rp_dw_minus = 0.5;
    // params.rp_dw_min = FLT_EPSILON; 
    // params.rp_dw_max = 50.;

    ANN.train(TrainData, trainClasses, Mat(), Mat(), params);

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值