首页 > 其他分享 >深度学习--梯度下降再理解+线性回归

深度学习--梯度下降再理解+线性回归

时间:2023-04-19 12:56:53浏览次数:32  
标签:-- 梯度 initial current gradient points iterations 线性

深度学习--梯度下降再理解+线性回归

梯度下降

梯度下降的对象是 模型的参数,即 权重w ,偏置项b,通过寻找合适的参数使模型的loss值最小

Loss函数是关于输入,输出,权重,偏置项的函数,即:loss=(y-(wx+b))^2。loss值最小,y与wx+b相似。

个人思考:如果训练的数据量越大,识别的准确率是越大还是越小?

线性回归

通过对L=(wx+b-y)^2进行线性回归计算

Linear_Optimize.py文件,损失函数实现和梯度更新

import numpy as np
#计算Loss
def compute_error_for_line_given_points(b,w,points):
    totalError = 0
    for i in range(0,len(points)):
        x = points[i,0]
        y = points[i,1]
        totalError +=(y-(w*x+b))**2
    return totalError/float(len(points))

#计算梯度
def step_gradient(b_current , w_current ,points , learningRate):
    b_gradient = 0
    w_gradient = 0
    N = float(len(points))
    for i in range(0,len(points)):
        x = points[i,0]
        y = points[i,1]
        #求梯度
        b_gradient += -(2/N)*(y-((w_current*x)+b_current))
        w_gradient += -(2/N)*x*(y-((w_current*x)+b_current))
    new_b = b_current - (learningRate * b_gradient)
    new_w = w_current - (learningRate * w_gradient)
    return [new_b,new_w]

#循环迭代
def gradient_desecnt_runner(points,starting_b,starting_w,learning_rate,num_iterations):
    b = starting_b
    w = starting_w
    for i in range(num_iterations):
        b,w = step_gradient(b,w,np.array(points),learning_rate)
    return [b,w]

主函数调用运行:

import numpy as np
import Linear_Optimize as LO

def run():
    points = np.genfromtxt("data.csv",delimiter=",")
    learning_rate = 0.0001
    initial_b = 0
    initial_w = 0
    num_iterations =1000
    print("Starting gradient descent at b={0},w={1},error={2}".format(initial_b,initial_w,LO.compute_error_for_line_given_points(initial_b,initial_w,points)))
    print("Running...")
    [b,w]=LO.gradient_desecnt_runner(points,initial_b,initial_w,learning_rate,num_iterations)
    print("after {0} iterations b={1},w={2},error={3}".format(num_iterations,b, w,LO.compute_error_for_line_given_points(b,w,points)))


if __name__ == '__main__':
    run()

标签:--,梯度,initial,current,gradient,points,iterations,线性
From: https://www.cnblogs.com/ssl-study/p/17332952.html

相关文章

  • window11防火墙阻止应用部分功能
    问题pycharm提示网络阻止部分功能解决关闭防火墙(正常情况关闭即可)查看详细的入站、出站规则......
  • STP
    问题1.非路由器,linux环境的设备使用什么命令配stp2.网桥的引入的回环如何分析处理3.网桥与网卡级联4.vlan5.stp相关延时及网卡的trace查看参考文档https://dandelioncloud.cn/article/details/1555409034268594178(brctl命令实现)https://cloud.tencent.com/developer/arti......
  • 入职okg半年个人提升规划
    规划从两个层面出发,即技术层面和业务层面。1.技术层面技术层面应包含对原本掌握的技术的巩固以及对新技术的学习。1.1技术的巩固JavsScript。js很多知识很久没有用或者一直停留在学习了但没用过,所以需要再去过一遍es6文档;此外对js的使用上大多习惯于使用笨语法,在之后......
  • raise和raise from捕获异常
    raise/from捕获:可同时抛出自定义异常和原生异常>>>try:...a=2/0...exceptExceptionase:...raiseException('分母不能为0')frome...Traceback(mostrecentcalllast):File"<stdin>",line2,in<module>ZeroDivisionEr......
  • 安卓开发1
    title:安卓开发四大组件安卓开发四大组件比较重要。其他的都相当于HTML+CSS+JS没什么卵用,那些控件用到了再学就行了四大组件:Activity,ContentProvider,BroadcastReceiver,Service(按重要程度排序)同时安卓版mybatis--->ROOM和SQLite掉包工具RetrofitFragmentlive......
  • vue3微信公众号商城项目实战系列(8)商品展示页面
    本篇实现在首页展示商品功能,表结构如下:表名字段功能goodsgoods_id(int)商品编号goods_name(varchar)商品名称photo(varchar)商品图片price(decimal)价格商品表页面呈现效果如下: 第1步:在api.js中加入获取首页商品信息和加购物车的接口方法,如下......
  • WPF 绑定注意事项二
    1.通用静态快捷键绑定命令cs:publicstaticKeyBtnReferHotKey=Key.F7;xaml:<UserControl.InputBindings><KeyBindingKey="{x:Staticcommon:Common.BtnReferHotKey}"Command="{BindingCmdSelectFromMaterial}"CommandParameter=&......
  • SQL 跨数据库处理 语句
    1.插入数据SETIDENTITY_INSERT数据库A.dbo.FI_FloExpenseDailyON--设置为允许手动插入值INSERTINTO数据库A.[dbo].[表1](ID,[FlowNo])SELECTID,ExpenseNoFROM数据库B.[dbo].[表1]WHEREAppType=0SETIDENTITY_INSERTMixOne_DB_Seind.dbo.FI_FloExpenseDaily......
  • Service 中的一些写法
    1.Service中调用存储过程context.UseTransaction(()=>{//使用存储过程DbParam[]pars=newDbParam[]{DbParam.Create("@FlowID",curStep.FlowID),DbParam.Crea......
  • docker
    目录docker0.绪论1.原理2.实现3.测试4.examplelist:docker0.绪论程序代码上线前的固定测试环境,使用容器技术。多方测试搭建的环境会有所不同,没有容器技术之前是使用虚拟机vm之间的clone来提升效率,即虚拟技术;云计算便是基于虚拟技术将堆叠的硬件划分实现。但是单纯的虚拟机之间......