1、梯度下降c代码

这篇博客介绍了批量梯度下降和随机梯度下降两种优化算法的C语言实现。通过示例代码,展示了如何使用这两种方法求解二次函数的极小值,并解释了梯度下降法在迭代过程中的工作原理。
摘要由CSDN通过智能技术生成




batch gradient descent(批量梯度下降)  
#include<stdio.h>
int main()
{
 //如何求y=2x^2极小值
 int i;
 double x=-2.0,a=0.05;


 for(i=1;i<=100;i++){
    x=x-a*4*x;
    printf("%lf\t",x);
 }
//如何求解x=[x1,x2]使y=5x1^2+6x2^2+7x1x2-8的极小值?
//一般想法是分别对x1,x2求导等于0 ,求解极值
double x1=2.0,x2=2.0;
for(i=1;i<=100;i++){
   x1=x1-a*(10*x1+7*x2);
   x2=x1-a*(12*x2+7*x1);
   printf("%lf %lf",x1,x2);
}




//梯度下降
double d[4][3]={ {1.0,1.0,4.0},{1.0,2.0,5.0},{1.0,5.0,1.0},{1.0,4.0,2.0}};//x0=1
int y[4]={19,26,19,20};
double theta[3]={0.0,2.0,5.0};//theta=0
float b=0.01;
float loss=1000;
int s,j,k;
double h=0.0,cha;
for( s=1;s<1000&&loss>0.0001;s++){
for( j=0;j<4;j++){
    h=0;
for( k=0;k<3;k++){


    h=h+theta[k]*d[j][k];//求出h=θ[i]*x[i]
}
cha=y[j]-h;//求出yi-hi


for( k=0;k<3;k++){
    theta[k]=theta[k]+a*cha*d[j][k];//迭代theta
}
}
 printf("%lf %lf %lf\t",theta[0],theta[1]),theta[2];//迭代多少次输出多少
}




return 0;


}




stochastic gradient descent(随机梯度下降)【这部分复制过来的】


随机梯度下降法

[cpp]  view plain  copy
  1. int main(void)  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值