#include #"> #include #" />
梯度下降与最小二乘法

梯度下降与最小二乘法

ID:13202320

大小:31.50 KB

页数:5页

时间:2018-07-21

梯度下降与最小二乘法_第1页
梯度下降与最小二乘法_第2页
梯度下降与最小二乘法_第3页
梯度下降与最小二乘法_第4页
梯度下降与最小二乘法_第5页
资源描述:

《梯度下降与最小二乘法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、梯度下降与最小二乘法#include "stdafx.h"#include "cv.h"#include "cxcore.h"#include "highgui.h"#include #include #include #include #pragma comment(lib, "cv.lib")#pragma comment(lib, "cxcore.lib")#pragma comment(lib, "highgui.lib")using namespace std;double Comput

2、eGradient(vector pts, double theta0, double theta1, int index){    double retVal = 0;    if(index == 0)    {        for(int i = 0; i < pts.size(); ++i)        {            retVal += ((theta0 + theta1*pts[i].x)-pts[i].y)*1;        }    }    else    {        for(int i = 0; i

3、 < pts.size(); ++i)        {            retVal += ((theta0 + theta1*pts[i].x)-pts[i].y)*pts[i].x;        }    }    return retVal;}int _tmain(int argc, _TCHAR* argv[]){    IplImage *img = cvCreateImage(cvSize(800, 600), 8, 3);    cvZero(img);    // create data    vector pts

4、;    srand(time(NULL));    for(int x = 0; x < img->width/4; x += 3)    {        double y = 2*x + rand()%50;        CvPoint2D32f pt = cvPoint2D32f(x, y);        pts.push_back(pt);    }    // gradient descent method    double theta0 = 0.0, theta1 = 0.0;    double alpha = 0.000001;    cvNa

5、medWindow("disp", 1);    for(int l = 0; l < 100; ++l)    {        cout << "(theta0, theta1): " << "(" << theta0 << ", " << theta1 << ")" << endl;        double tempTheta0 = theta0 - alpha*ComputeGradient(pts, theta0, theta1, 0);        double tempTheta1 = theta1 - alpha*ComputeGradient(

6、pts, theta0, theta1, 1);                double eps = sqrt( (tempTheta0-theta0)*(tempTheta0-theta0) + (tempTheta1-theta1)*(tempTheta1-theta1));        if(eps < 0.001)            break;        else        {            theta0 = tempTheta0;            theta1 = tempTheta1;        }        //

7、 update result            cvZero(img);        for(int i = 0; i < pts.size(); ++i)        {            cvDrawCircle(img, cvPoint(pts[i].x, pts[i].y), 2, CV_RGB(250, 0, 0),                2, CV_AA);        }        cvDrawLine(img, cvPoint(0, theta0), cvPoint(200, theta0+200*theta

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。