线性回归之随机梯度下降(sgd)

2023-11-11

梯度下降的原理:梯度下降
普通梯度下降bgd的方法简单暴力,但是调整速度比较慢。
如果不想等所有数据都计算完了才开始调整w,而是计算完数据的一部分(batch_size)后就立即调整w,说白了就是在训练过程中进行权重的更新。
这样就成了随机梯度下降
主要优点有:
* 收敛速度更快,
* 避免过拟合的问题。
代码更新如下:

'''
随机全梯度下降方法
改进:进行到一部分的时候即更新权重

'''
import numpy as np
import math


print(__doc__)

sample = 10
num_input = 5

#加入训练数据
np.random.seed(0)
normalRand = np.random.normal(0,0.1,sample)      # 10个均值为0方差为0.1 的随机数  (b)
weight = [7,99,-1,-333,0.06]                     # 1 * 5 权重
x_train = np.random.random((sample, num_input))  #x 数据(10 * 5)
y_train = np.zeros((sample,1))                   # y数据(10 * 1)


for i in range (0,len(x_train)):
    total = 0
    for j in range(0,len(x_train[i])):
        total += weight[j]*x_train[i,j]
    y_train[i] = total+ normalRand[i]


# 训练
np.random.seed(0)
weight = np.random.random(num_input+1)
rate = 0.04
batch = 3

def train(x_train,y_train):
    #计算损失
    global weight,rate
    predictY = np.zeros((len(x_train)))
    for i in range(0,len(x_train)):
        predictY[i] = np.dot(x_train[i],weight[0:num_input])+ weight[num_input]
        loss = 0
        for i in range(0,len(x_train)):
            loss += (predictY[i]-y_train[i])**2

    for i in range(0,len(weight)-1):
        grade = 0
        for j in range(0,len(x_train)):
            grade += 2*(predictY[j]-y_train[j])*x_train[j,i]
        weight[i] = weight[i] - rate*grade

    grade = 0
    for j in range(0,len(x_train)):
        grade += 2*(predictY[j]-y_train[j])
        weight[num_input] = weight[num_input] - rate*grade

    return loss


for epoch in range(0,100):
     begin = 0
     while begin < len(x_train):
          end = begin + batch
          if end > len(x_train):
               end = len(x_train)

          loss = train(x_train[begin:end],y_train[begin:end])

          begin = end

          print("epoch: %d-loss: %f"%(epoch,loss))      #打印迭代次数和损失函数
print(weight)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

线性回归之随机梯度下降(sgd) 的相关文章

  • EMC测试项目——辐射骚扰

    辐射骚扰 Radiation emission 主要是指能量以电磁波的形式由源发射到空间 或能量以电磁波形式在空间传播的现象 辐射骚扰是电磁兼容的重要内容 也是测试最不容易通过且最难整改的项目 辐射骚扰超标的产品可能引起周围装置 设备或系统
  • rust腐蚀怎么建立单机服务器_腐蚀rust新手入门指南 腐蚀rust怎么开始游戏

    如何开始游戏 巴拉巴拉那么多现在开始步入正轨吧 点击find game 就进入了服务器列表 在这里你可以加入官方的服务器 热闹但高延迟 也可以加入玩家自己设置的服务器 有些服务器不怎么友好详情请看贴吧举报贴 1 官方服务器列表 2和3 玩家
  • 解决JDK版本导致JMeter无法启动问题

    最近在做一个秒杀系统练习时 需要使用JMeter进行压力测试 但是安装JMeter后 出现了以下错误 很明显是JDK的版本问题导致的 但是我又不想改变系统的JDK版本 所以可以下载高版本的JDK 无需改变系统的JDK版本 直接在bin jm
  • nginx-代理多个服务

    目录 1 主机多Ip 1 1单网卡多ip主机配置 1 2修改default conf 1 3server1 conf 1 3server2 conf 1 4测试文件 1 4重启测试 2 主机多端口 2 1server1 conf 2 2se
  • 三个不等_高中数学竞赛常用的不等式归纳(续一)

    当 时 代入 23 为减少篇幅就不在此写出完整的 23式 下同 式得 即 25 25 式正是 22 九 加权不等式 9 1若 且 则 26 26 式就是加权的均值不等式 简称加权不等式 26 式形式直接理解为 几何均值不大于算术均值 十 赫
  • 2020第八届“泰迪杯”特等奖(基于 BERT 深度语言模型的“智慧政务”文本挖掘应用)

    目录 1绪论 1 1 智慧政务 文本挖掘的意义 1 2 智慧政务 文本挖掘的目标 1 3语言智能的里程碑技术 BERT 深度语言模型介绍 1 4本文的总体框架 1 5本文主要的创新之处 2基于 BERT 模型的留言自动分类 2 1任务介绍与
  • 数据库连接池C3P0学习

    数据库连接池C3P0框架是个非常优异的开源jar 高性能的管理着数据源 这里只讨论程序本身负责数据源 不讨论容器管理 一 实现方式 C3P0有三种方式实现 1 自己动手写代码 实现数据源 例如 在类路径下配置一个属性文件 config pr
  • 1-2 继承和接口

    1 继承 关键字extends 父类中私有成员可以被继承 只是外界无法访问 父类中公共属性 方法可以被子类继承 支持单继承 多重继承 单链式继承 不支持多继承 一个类继承多个父类 子类中的方法重写必须是父类中已有的方法 重写后再次调用父类的
  • shell 自动备份 MySQL 数据库脚本

    前提 在当前的机器中 已经安装了 MySQL 并且将 MySQL 已经加入到环境当中 安装 MySQL 和配置 MySQL 环境可参考文章 CentOS 8 通过二进制安装 MySQL 需求 编写 shell 脚本 自动备份 MySQL 数
  • 插入排序和选择排序(普通排序)

    我自己的代码 更容易理解 void XuanZePaiXu int a int n int i j k for int i 0 i lt n i k i for int j i 1 j lt n j if a k gt a j k j if
  • Vue2 _ 实现拖拽功能

    老项目重构 其中有一些拖拽功能 不过用的是两个开源 JS 拖拽文件实现的效果 版本太老了 所以需要换代了 然后就查阅了能够用 Vue 来简单快速实现拖拽的功能实现方法 目录 一 HTML 拖放 二 Vue Draggable 强烈推荐 三
  • NFT.net批量生成NFT头像(汉化版+使用文档)

    本程序NFT net可用于批量快速生成NFT头像 相同风格但不尽相同 原程序由老外开发 本人将其汉化 并制作使用文档 工具参考 NFT net 一个可以批量生成NFT头像的工具 素材参考 B站up主 卡司红茶 汉化版 使用文档 本人首发 如
  • maven如何快速查找某个包哪里引入的

    描述 最近项目中遇到一个问题 有个jar包跟项目的中的代码冲突导致一些奇怪的异常 项目是maven项目 问题查找 由maven官网可知道maven的Dependency plugin就有这个问题的解决方案filtering the depe
  • Sybase的客户端工具

    虽然已经离开用Sybase的项目很久了 但今天突然有同事问我Sybase的客户端工具都用什么 我却不记得当时天天用的什么工具了 上网找了半天才找到软件的名字 在此做个小小的总结 以免以后更想不起来 以下几个工具都是当时常用的 他们各有优缺点
  • panda3d虚幻引擎--(1)

    目录 前言 阿巴阿巴 安装 调整窗口 导入环境 前言 阿巴阿巴 前几天无意间看到了一个叫做panda3d的东西 觉得挺好玩 就翻教程 发现现在中文教程似乎没有那么全面成体系 大部分都是复制粘贴过来官网的实例然后就发布出去了 看得云里雾里的
  • 网络安全与密码学

    1 网络安全威胁 破坏网络安全的一些理论方式 窃听 窃听信息 在网路通信双方直接进行窃听 插入 主动在网络连接中插入信息 可以在message中插入恶意信息 假冒 伪造 spoof 分组中的源地址 假冒客户端或服务器 劫持 通过移除 取代发
  • idea的bug导致的项目编译问题。

    项目代码报红 方法一 删掉依赖的子项目target 然后重新install子项目 本项目重新maven reimport 重新install 方法二 删掉 idea 文件夹 重新引入项目 方法三 invalidate Caches 清除缓存
  • 运算放大器的异常总结——震荡和发热

    上图中 运算放大器输出端F1是保险丝 此处的保险丝有2个作用 1 防止输出端短路 保护运放 2 保险丝本身存在电阻 防止运放震荡 对于第一条不需要过多解释 但是第二条 如果此处保险丝去除改为直通 则因为容性负载的存在 运放可能引起震荡 此外
  • 《画解数据结构》(2 - 5)- 堆 与 优先队列

    画解数据结构 2 5 堆

随机推荐

  • tcp业务层粘包和半包理解及处理

    tcp粘包处理 tcp是流式传输的 是安全的 可靠的 顺序的 udp是数据报协议 是不可靠的 面试中经常被问到tcp粘包是如何处理的 通过百度和自己的理解 这里做笔记记录 如果有不对 请指正 参考 https bbs csdn net to
  • Auto.js实现返回到应用首页(判断是否在应用首页)

    文章目录 前言 一 实现思路 二 实现步骤 使用与总结 前言 Auto js使用实现模拟点击过程中 有时软件并不在脚本运行页面 使得脚本运行无效 例如脚本需要在软件首页才能找到相关元素实现模拟操作 就需要判断页面状态 不是首页返回到首页 是
  • FreeRTOS临界段和开关中断

    http blog sina com cn s blog 98ee3a930102wg5u html 本章教程为大家讲解两个重要的概念 FreeRTOS的临界段和开关中断 本章教程配套的例子含Cortex M3内核的STM32F103和Co
  • 用python写个类似浏览器的下载器,超简单的

    以前没有学习python时 想要下载一个网上的文件 就只能把浏览器打来 找到文件的下载链接 将地址放进去 现在学了python后 才发现
  • IDEA activeCode激活码

    Code licenseId 1337 licenseeName Downloadly assigneeName Downloadly assigneeEmail Downloadly Downloadly ir licenseRestri
  • redis 执行filter 过滤

    关于redis的基础知识就不扯了 今天来聊聊redis 中怎样执行过滤语句 127 0 0 1 6379 gt sadd myset1 a a1 b1 c1 d1 i 990 i2 991 integer 6 127 0 0 1 6379
  • Python数据分析与展示(Numpy、MatPlotlib、Pandas)(更新中)

    本文是根据嵩天老师慕课 Python数据分析与展示 制作出的笔记 文章目录 NumPy N维数组对象 ndarray ndarray对象的属性 ndarray数组的元素类型 ndarray数组的创建方法 1 从Python中的列表 元组等类
  • 8-mySQL-一些常用语句表格处理

    文章目录 CREATE TABLE CREATE VIEW CREATE INDEX ALTER TABLE SQL 主键 SQL 外来键 DROP TABLE TRUNCATE TABLE INSERT INTO UPDATE DELET
  • 时间盲注之book靶场实战

    对book网站使用时间盲注 先判断是否有时间盲注和类型 qqq and sleep 5 判断数据长度 qqq and if length database gt 9 sleep 5 1 用抓包工具 bburpsuite 爆数据库名 gues
  • xshell连接不上VMware虚拟机解决思路

    相信很多小伙伴在使用xshell连接虚拟机的时候有可能出现种种原因连接不上 这里给大家分享一个我所碰到的问题解决思路 前提 先关闭selinux和防火墙 centos6还需要关闭networkmanager 1 如果前面的操作完成还是连接不
  • c++运算符操作

    求模运算 求余数 模 在CPU中 与除法运算使用同一个运算器 例如 a b 注意 a b 运算结果的正负号与 a 的正负号保持一致 与数学上的定义恰恰相反 int a 5 3 b 5 3 a为2 b为 2 int c 5 3 d 5 3 c
  • 假如我是面试官,我会这样虐你

    本文转载自微信公众号 zhisheng 又是金三银四的时候 我希望这份面试题能够祝你一臂之力 自我和项目相关 1 自我介绍 2 你觉得自己的优点是 你觉得自己有啥缺点 3 你有哪些 offer 4 你为什么要离开上家公司 你上家公司在xxx
  • 数据挖掘的定义、好处、应用、顶级技术

    数据挖掘的定义 好处 应用 顶级技术 我们生活在一个信息丰富的数据化世界 虽然拥有大量现成的知识是令人欣慰的 但巨大的数量也带来了挑战 可用的信息越多 就越能找到您需要的有用的见解 这就是为什么今天我们要讨论数据挖掘 我们将探讨数据挖掘的各
  • macbook安装idea

    1 首先进入IntelliJ IDEA官网 2 我选择专业版 因为M1 pro 所以下载如下的idea 下载完成后可以在访达中看到 双击后会如图 进行如下操作 安装完成才发现202103版的没有试用期 然后通过一系列的努力发现了这个 ide
  • “九歌”来了

    九歌 是清华大学人工智能研究院自然语言处理与社会人文计算研究中心主任孙茂松教授带领的THUAIPoet团队研发的中文诗歌自动生成系统 支持集句诗 绝句 藏头诗 词等不同体裁诗歌的在线生成 作为目前最有影响的诗歌生成系统之一 九歌 曾于201
  • 压力式水位计是怎样安装的?

    1 检查水位计探头及数据电缆外观有无破损 2 采用悬吊的方式将压力式水位计探头及数据传输线缆放入水位测井或者测量容器的底部 若无淤泥的情况下 将传感器放到水位最低点 如有淤泥 要高于淤泥面 真是水位要做相应偏移 若现场换件较为复杂 将水位计
  • 我见过的星网锐捷

    作为一个外来者角度来讲 对星网锐捷是很了解的一家公司 公司整体管理在该领域中算是 自己认可比较好的 在这里最觉得棒的是行政 保安等单位 一个公司的体现很多投资人在意厕所干净 管理水平 在这里我觉得在于保安人员的整体协同 配合能力 锐捷 很多
  • 【Jetson-Nano】SD卡重新格式化

    文章目录 1 打开磁盘管理系统 2 打开powershell 以管理员身份运行 3 输入diskpart 并按回车键 4 输入 list disk 并按回车 5 输入select disk 并按下回车 6 输入clean 并回车 7 进行分
  • (休息几天)读曼昆之微观经济学——决策制定

    1取舍 权衡 一个人的精力有限 所以要学会分配自己的时间 比如多花一小时运动则会少花一小时学习 当这个道理用于社会服务时 则是大炮和黄油的道理 另外 社会面对的另一种权衡是效率与平等的关系 效率是指经济馅饼的大小 平等是指如何切分这个馅饼
  • 线性回归之随机梯度下降(sgd)

    梯度下降的原理 梯度下降 普通梯度下降bgd的方法简单暴力 但是调整速度比较慢 如果不想等所有数据都计算完了才开始调整w 而是计算完数据的一部分 batch size 后就立即调整w 说白了就是在训练过程中进行权重的更新 这样就成了随机梯度