C语言实现随即梯度下降,批量梯度下降法
来源:互联网 发布:淘宝客服的个人介绍 编辑:程序博客网 时间:2024/06/06 02:45
批量梯度下降:
/* * 批量梯度下降实验: * 训练集输入为矩阵: * 1,4 * 2,5 * 5,1 * 4,2 * 输出结果为: * 19 * 26 * 19 * 20 * 需要参数为theta: * theta0 * theta1 * * 目标函数: * y=theta0*x0+theta1*x1; * */ #include <stdio.h>int main(){ float matrix[4][2]={{1,4},{2,5},{5,1},{4,2}}; float result[4]={19,26,19,20}; float theta[2]={1,3}; float loss = 10.0; for (int i = 0; i < 1000&&loss>0.0000001; ++i) { float error_sum=0.0; float cost[2]={0.0,0.0}; for (int j = 0; j <4 ; ++j) { float h = 0.0; for (int k = 0; k < 2; ++k) { h+=matrix[j][k]*theta[k]; } error_sum=result[j]-h; for (int k = 0; k < 2; ++k) { cost[k]=error_sum*matrix[j][k]; } } for (int k = 0; k < 2; ++k) { theta[k]=theta[k]+0.01*cost[k]/4; } printf("i=%d,%f,%f\n",i,theta[0],theta[1]); loss = 0.0; for (int j = 0; j < 4; ++j) { float h2=0.0; for (int k = 0; k < 2; ++k) { h2+=matrix[j][k]*theta[k]; } loss+=(h2-result[j])*(h2-result[j]); } printf("%f\n",loss); } return 0;}
随机梯度下降:
/* * 随机梯度下降实验: * 训练集输入为矩阵: * 1,4 * 2,5 * 5,1 * 4,2 * 输出结果为: * 19 * 26 * 19 * 20 * 需要参数为theta: * theta0 * theta1 * * 目标函数: * y=theta0*x0+theta1*x1; * */ #include <stdio.h>int main(void){ float matrix[4][2]={{1,4},{2,5},{5,1},{4,2}}; float result[4]={19,26,19,20}; float theta[2]={2,5}; float loss = 10.0; for(int i =0 ;i<1000&&loss>0.00001;++i) { float error_sum=0.0; int j=i%4; float h = 0.0; for(int k=0;k<2;++k) { h += matrix[j][k]*theta[k]; } error_sum = result[j]-h; for(int k=0;k<2;++k) { theta[k] = theta[k]+0.01*(error_sum)*matrix[j][k]; } printf("i=%d,%f,%f\n",i,theta[0],theta[1]); loss = 0.0; for(int j = 0;j<4;++j) { float sum=0.0; for(int k = 0;k<2;++k) { sum += matrix[j][k]*theta[k]; } loss += (sum-result[j])*(sum-result[j]); } printf("%f\n",loss); } return 0;}
0 0
- C语言实现随即梯度下降,批量梯度下降法
- 梯度下降&随即梯度下降
- 梯度下降法的C语言实现
- 随机梯度下降法,批量梯度下降法和小批量梯度下降法以及代码实现
- 批量梯度下降和随机梯度下降matlab 实现
- 随机梯度下降法和批量梯度下降法
- 批量梯度下降法BGD,随机梯度下降法SGD
- 随机梯度下降法和批量梯度下降法
- 梯度下降 随机梯度下降 批量梯度下降
- 梯度下降、随机梯度下降和批量梯度下降
- 随机梯度下降与批量梯度下降
- 随机梯度下降和批量梯度下降
- 批量梯度下降与随机梯度下降
- 随机梯度下降和批量梯度下降
- 批量梯度下降与随机梯度下降
- 随机梯度下降与批量梯度下降
- 批量梯度下降和随机梯度下降
- 随机梯度下降与批量梯度下降
- Android之ContentProvider详解
- 结解
- 使用Chrome开发者工具注入Javascript实现额外功能
- viewpage详解,四大函数
- 网页与HTML语言
- C语言实现随即梯度下降,批量梯度下降法
- 用两个栈实现队列
- 黑马程序员——Java之编程基础(一)
- Nginx RTMP 模块 nginx-rtmp-module 指令详解
- WEB测试方法及注意地方
- Effective STL -- 容器
- 【POJ 1160】Post Office
- 推荐几本我学习编程看过的好书
- Linux中的SBIT