梯度下降法解决线性回归

2023-11-15

'''
用梯度下降的优化方法来快速解决线性回归问题
'''

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

# 构建数据
points_num = 100
vectors = []
# 用numpy的正态随机分布函数生成100个点,这些点的(x,y)坐标值对应线性方程y = 0.1*x + 0.2
# 权重(Weight)是0.1,偏差(Bias)是0.2
for i in range(points_num):
    x1 = np.random.normal(0.0, 0.66)
    y1 = 0.1 * x1 + 0.2 + np.random.normal(0.0, 0.04)
    vectors.append([x1,y1])

x_data = [v[0] for v in vectors]  # 真实的点的x坐标
y_data = [v[1] for v in vectors]  # 真实的点的y坐标
# 图像1 :展示所有的随机数据点
plt.plot(x_data, y_data, 'r*', label="Original data")
plt.title("Linear Regression using Gradient Descent")
plt.legend()
plt.show()

# 构建线性回归模型
W = tf.Variable(tf.random_uniform([1], -1.0, 1.0))  # 初始化Weight
# tf.random_uniform((4, 4), minval=low, maxval=high)返回4*4的矩阵,产生于low和high之间,产生的值是均匀分布的。

b = tf.Variable(tf.zeros([1]))  # 初始化Bias
y = W * x_data + b  # 模型计算出的y

# 定义 loss function(损失函数) 或 cost function(代价函数)
# 对 Tensor 的所有维度 计算((y - y_data)^2)之和 / N
loss = tf.reduce_mean(tf.square(y - y_data))
# tf.reduce_mean 计算所有维度的平均值

# 用梯度下降的优化器来优化 loss function
optimizer = tf.train.GradientDescentOptimizer(0.5)  # 设置学习率 0.5
train = optimizer.minimize(loss)

# 创建会话
with tf.Session() as sess:
    init = tf.global_variables_initializer()  # 初始化数据流图中的所有变量
    sess.run(init)
    # 训练20步
    for step in range(20):
        sess.run(train)  # 优化每一步
        print("Step=%d, Loss=%f, [Weight=%f Bias=%f]" % (step, sess.run(loss), sess.run(W), sess.run(b)))
    # 图像2: 绘制所有的点并且绘制出最佳拟合的直线
    x_data = [v[0] for v in vectors]  # 真实的点的x坐标
    y_data = [v[1] for v in vectors]  # 真实的点的y坐标
    # 图像1 :展示所有的随机数据点
    plt.plot(x_data, y_data, 'r*', label="Original data")
    plt.title("Linear Regression using Gradient Descent")
    plt.plot(x_data, sess.run(W) * x_data + sess.run(b), label="Fitted line")
    plt.legend()
    plt.xlabel('x')
    plt.ylabel('y')
    plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

梯度下降法解决线性回归 的相关文章

  • Webots安装和教程推荐

    安装与推荐 软件介绍 Webots是一款专业的物理仿真软件 被广泛运用在机器人 智能车仿真实践控制算法中 2018年12月该软件宣布开源 Webots最初采用C进行编程 至今已经实现提供C C Python Java Matlab接口的AP
  • JS setAttribute()方法:设置元素的属性值

    在 JavaScript 中 使用元素的 setAttribute 方法可以设置元素的属性值 用法如下 setAttribute name value 参数 name 和 value 分别表示属性名称和属性值 属性名和属性值必须以字符串的形
  • 用户政策和隐私协议

    杭州宜果送信息科技有限公司 以下简称 宜果送 重视用户的隐私 宜果送隐私政策 更新日期 2022年1月18日 提示条款 您的信任对我们非常重要 我们深知个人信息对您的重要性 我们将按法律法规要求 采取相应安全保护措施 尽力保护您的个人信息安
  • 隔离式栅极驱动器输入级对电机驱动应用的影响

    介绍 在电机驱动应用中为功率级选择隔离式栅极驱动器时 您有多种选择 栅极驱动器可简单可复杂 具有集成米勒箝位 分离输出或绝缘栅双极晶体管 IGBT 发射极的欠压 UVLO 锁定参考等功能 输入级有两个选项 电压输入级或电流输入级 在本文中
  • Visual Studio问题汇总

    合并两个vs解决方案 不能 下载别人的vs程序易出现sdk不符合等问题 项目右键属性 目标版本平台 平台工具集 都改为自己已有的就行了 还要注意配置和平台对应哦 1 问题 Callback 模板 从属名称的使用必须以模板为前缀 解决 项目右
  • 大一Python期末复习笔记

    目录 前言 一 输出格式控制 多行输出 不换行输出 精度保留和对齐 format f 二 嵌套 嵌套循环 for while 嵌套列表 字典 三 列表与字符串 添加元素 切片访问与逆序 join count find index 删除与替换
  • js闭包——简单例子

    闭包 当内部函数被保存到外部时 将生成闭包 闭包会导致原有的作用域链不释放 造成内存泄漏 如下两个例子 function test var tmp 100 function a console log tmp return a 把里面的函数
  • 4.Vue3计算属性computed实现原理

    computed实现原理 computed特性 computed可以传入一个函数 也可以传入一个对象 带有get和set方法 计算属性返回一个计算值 该值通过value属性访问 当参与计算的数据发生改变 则重新计算 不发生改变 则直接返回之
  • el-popover 样式修改

    el popover 样式修改 通过popper class绑定自定义类名popperOptions 注意popperOptions需放在样式的根文件中 原始样式 更改后的样式
  • uva 101 vector+函数设计

    vector c 中封装好的类 头文件
  • SQL DROP

    SQL DROP SQL 撤销索引 撤销表 以及撤销数据库 通过使用DROP 语句 可以轻松地删除索引 表和数据库 DROP INDEX 语句 DROP INDEX 语句用于删除表中得索引 DROP INDEX table name ind
  • Go语言入门【10】Map

    Map map是一种键值对形式的数据结构 一个键对应一个值 可以通过键快速检索出其对应的value值 在map中key的值是唯一的 value的值不唯一 并且map中保存的数据是无序的 Map声明 声明Map可以使用map关键字进行声明 同
  • 【华为OD机试真题 JS】连续出牌数量

    标题 连续出牌数量 时间限制 1秒 内存限制 262144K 语言限制 不限 有这么一款单人卡牌游戏 牌面由颜色和数字组成 颜色为红 黄 蓝 绿中的一种 数字为0 9中的一个 游戏开始时玩家从手牌中选取一张卡牌打出 接下来如果玩家手中有和他
  • 核磁共振重建算法综述

    自己整理的一些核磁共振重建综述文章 仅供参考 不发表 文章目录 摘要 一 引言 二 核磁共振成像原理 2 1 核磁共振成像过程 2 2 K空间 2 3 核磁共振数据采集过程 三 核磁共振重建方法 3 1 部分傅里叶重建方法 3 2 并行重建
  • 毕业设计—基于深度学习的网络流量预测研究

    目录 前言 课题背景和意义 实现技术思路 一 网络流量预测评价指标 二 基于深度学习的网络流量预测方法 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精
  • 【微信公众号】微信公众号授权出现的常见问题解决方案

    问题1 在微信公众号授权时出现了 解决方案 1 首先查看后端的url配置是否正确 是否进行了转码 官方API上说明了redirectUrl应使用String redirectUri URLEncoder encode redirectUrl
  • 记一次VUE项目中内存崩溃的排查

    F12 内存工具查看内存情况 大量的数据被 vue 代理 UI 框架内存溢出
  • 第七课:变量的高级主题(下)

    变量的高级主题 下 环境变量 全局变量 makfile中能够直接使用环境变量的值 定义了同名变量 环境变量将被覆盖 运行make时指定 e 选项 优先使用环境变量 为什么要在makefile中使用环境变量 优势 环境变量可以在所有的make
  • 【Attention】Dual Attention(DANet) & Fully Attention(FLA)

    空间注意力有助于保留细节信息 通道注意力有助于保留大物体的语义一致性 有效使用两种注意力可以提升性能 本文旨在记录一些常用的注意力 以及代码实现 包括两篇文章 DANet FLA Dual Attention Network for Sce
  • linux笔记之初次接触信号

    一 关于信号概念 1 信号是Linux所使用的进程间通信的最古老的方式 它是在软件层次上对中断机制的一种模拟 是一种异步通信的方式 一个完整的信号周期包括三个部分 信号的产生 信号在进程中的注册 信号在进程中的注销 执行信号处理函数 如下图

随机推荐

  • Linux系统之部署Dailynotes个人笔记管理工具

    Linux系统之部署Dailynotes个人笔记管理工具 一 Dailynotes介绍 二 本地环境介绍 2 1 本地环境规划 2 2 本次实践介绍 三 检查本地环境 3 1 检查本地操作系统版本 3 2 检查系统内核版本 3 3 检查本地
  • Python中insert用法详解!

    Python中insert用法是什么 这篇文章为大家详细的讲解一下Python中insert用法 并附带实战案例 希望能够给你们带来帮助 描述 insert 函数用于将指定对象插入列表的指定位置 语法 inser 方法语法 list ins
  • 华为云云耀云服务器L实例评测|Linux系统之安装Tomcat

    华为云云耀云服务器L实例评测 Linux系统之安装Tomcat 一 云耀云服务器L实例介绍 1 1 云耀云服务器L实例简介 1 2 云耀云服务器L实例特点 二 Tomcat介绍 2 1 Tomcat简介 2 2 Tomcat特点 三 本次实
  • 可视化技巧:分类问题中的决策面画法 (直观理解plt.contour的用法)

    摘要 通过分类问题中决策面的绘制过程直观理解matplotlib中contour的用法 主要包括对 np meshgrid 和plt contour的直观理解 前言 分类问题中 我们习惯用2维的dmeo做例子 验证算法的有效性 直观的评价方
  • css实现随机颜色,CSS3 一个显示随机颜色的动画

    CSS 语言 CSSSCSS 确定 html body background webkit linear gradient top fff dcf background linear gradient to bottom fff dcf h
  • upload-labs-master靶场 Pass06-10通关秘诀(详解版)

    关数 通关特征 PASS 06 大小写绕过上传 关卡分析 有些程序编写上传点过滤时会过滤常见后缀 黑名单 如php asp aspx jsp phtml等 如果为对上传 后缀进行小写转换 那么我们即可通过文件后缀名大小写方式进行绕过上传we
  • 数据结构之线性结构

    数据结构是计算机存储 组织数据的方式 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合 通常情况下 精心选择的数据结构可以带来更高的运行或者存储效率 数据结构往往同高效的检索算法和索引技术有关 常见的数据结构可分为 线性结构 树形
  • 用docker借助deepo镜像训练深度学习模型

    这里写自定义目录标题 用docker借助deepo镜像训练深度学习模型 Deepo简介 docker hub 地址 安装步骤 运行 用docker借助deepo镜像训练深度学习模型 Deepo简介 deepo是我从网上了解的一个比较全的深度
  • 回想过去几年的编程生活

    17年 我从一所普通的二本学校毕业 抱着对未来无限憧憬的希望踏上社会 3年初中 3年高中 4年大学 一步一步 努力奋斗 终于要开始挣钱了 终于可以独立了 仿佛美好的一切都会来的 记得是16年的是12月 大四上学期 结束 我迫不及待的找了一份
  • (实习)基线检测时遇到的问题

    首先要先清楚什么是基线检测 安全基线其实是系统最低安全要求的配置 常见的安全基线配置标准有ISO270001 等级保护2 0等 企业也可以建立自己的标准 检测的内容 分为三个方面 1 系统存在的安全漏洞 2 系统配置的脆弱性 3 系统状态的
  • ★动态规划(DP算法)详解

    什么是动态规划 动态规划 百度百科 内容太多了不作介绍 重点部分是无后效性 重叠子问题 最优子结构 问S gt P1和S gt P2有多少种路径数 毫无疑问可以先从S开始深搜两次 S gt P1和S gt P2找出所有路径数 但是当这个图足
  • linux上使用libreoffice对文件类型转换

    目录 libreoffice下载与安装 使用 常见问题 libreoffice下载与安装 1 手动下载 https www libreoffice org download download libreoffice type deb x86
  • JVM类加载机制以及类缓存问题的处理

    当一个java项目启动的时候 JVM会找到main方法 根据对象之间的调用来对class文件和所引用的jar包中的class文件进行加载 其步骤分为加载 验证 准备 解析 初始化 使用和卸载 方法区中开辟内存来存储类的运行时数据结构 包括静
  • 安装cvxpy之后,报错The solver GLPK_MI is not installed

    安装cvxpy之后用的时候 报错The solver GLPK MI is not installed 这边我们可以用以下代码查看已经安装的下载器 print cvxpy installed solvers 在安装个cvxopt即可 pip
  • 基于SpringBoot的财务管理系统

    末尾获取源码 开发语言 Java Java开发工具 JDK1 8 后端框架 SpringBoot 前端 Vue 数据库 MySQL5 7和Navicat管理工具结合 服务器 Tomcat8 5 开发软件 IDEA Eclipse 是否Mav
  • 解决:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure(真实有效)

    数据库连接失败 一 例如我在SpringBoot项目中使用了阿里的数据库连接池Driud 有次在启动的时候 会报这样的错 Caused by com mysql cj exceptions CJCommunicationsException
  • 艺术品拍卖爬虫:使用Python抓取艺术品拍卖网站上的拍卖信息与成交价格

    目录 第2部分 爬取艺术品拍卖网站数据 2 1 确定目标网站 2 2 获取页面内容 2 3 解析网页内容
  • 学习编程有必要做笔记吗?

    小编发现W3Cschool的程序员很喜欢记笔记 桌面永远挂着个笔记软件 笔记本也写的密密麻麻的 那么做编程真的有必要做笔记吗 怎么记呢 一起来看下知乎网友怎么说 花生PeA 记不记笔记看情况 比如题主学的HTML CSS PHP 已经有十分
  • 行内元素的默认的横向边距与纵向边距

    行内元素在渲染是会默认添加右侧和底部边距 如果在多个图片排列时这种情况就比较明显 当我们需要在布局上完全无边距的时候就需要去除这些编剧 去除方法就是 在单元元素上添加下面对应的属性去除边距 去除横向边距 x noSpace font siz
  • 梯度下降法解决线性回归

    用梯度下降的优化方法来快速解决线性回归问题 import tensorflow as tf import numpy as np import matplotlib pyplot as plt import os os environ TF