tensorflow手动实现线性回归梯度下降

pytorch手动实现梯度下降法,随机梯度法--基于logistic Regression并探索Mini batch作用 简述 基于这次凸优化的大项目作业。 下面会围绕着通过logistic Regression来做MNIST集上的手写数字识别~ 以此来探索logistic Regression,梯度下降法,随机梯度法,以及Mini batch的作用。 核心任务是实现梯度下降法和随机梯度法。但是其他的准备工作也得做的较为好~ 导入的包 import os import torch import torch.nn as... 阅读详情

原理

模型表示:
在这里插入图片描述
数据要进行缩放归一化
代价函数:
在这里插入图片描述
在这里插入图片描述
i表示第i个训练实例 j表示第j个特征
同时更新theta
用矩阵表示就是:
error = y_pred - y – shape(m,1)
在这里插入图片描述

拆开用矩阵表示一下最后的求导更新过程:
假设训练数据规模m*n,m条训练数据,每条数据n个特征,所以有theta0 theta1 — thetan

在这里插入图片描述

代码如下:

准备数据:

import numpy as np
import tensorflow as tf
from sklearn.datasets import fetch_california_housing
housing = fetch_california_housing()
m, n = housing.data.shape
#np.c_按colunm来组合array
housing_data_plus_bias = np.c_[np.ones((m, 1)), housing.data]

归一化

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
scaled_housing_data = scaler.fit_transform(housing.data)
scaled_housing_data_plus_bias = np.c_[np.ones((m, 1)), scaled_housing_data]

梯度下降:

n_epoches = 10000
learning_rate = 0.01

X = tf.constant(scaled_housing_data_plus_bias, dtype = tf.float32, name = 'X') # [m,n+1]
y = tf.constant(housing.target.reshape(-1,1),dtype=tf.float32,name='y')
theta = tf.Variable(tf.random_uniform([n + 1, 1], -1.0, 1.0, seed=42), name="theta")  # [n+1,1]--shape

y_pred =tf.matmul(X,theta,name='predictions')
error = y_pred - y
mse = 1/2*tf.reduce_mean(tf.square(error),name = 'mse') # compute avarage
gradients = 1/m*tf.matmul(tf.transpose(X),error)

training_op = tf.assign(theta, theta-learning_rate*gradients)

init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    
    for epoch in range(n_epoches):
        if epoch % 100 == 0:
            print("Epoch", epoch, "MSE =", mse.eval())
            sess.run(training_op)
    best_theta = theta.eval()

部分效果:
在这里插入图片描述

这里求gradients是在手推出线性回归的求导之后得到的,但是有的并不好求导,可以直接将gradients替换为:

gradients = tf.gradients(mse, [theta])[0]
机器学习作业-线性回归 南京房价预测 ML课上老师布置的第一个作业,利用线性回归预测南京房价,具体任务和数据如下图所示: 首先我们可以很简单的看出这是一个递增的序列,所以2014年的价格大致应该是在13左右,这有助于我们调试程序。 所谓线性回归就是用一条直线去拟合数据的关系,其拟合结果的理想情况当然是所有的数据点都能落到模型拟合的直线上,当然这基本是不可能的,线性回归的假设(或者说模型)便由下面这个公式表述: 在我们这个... 阅读详情

相关推荐

[深度学习]-初识 TensorFlow (Python)

介绍TensorFlow基础概念,通过一个简单的线性回归模型讲解自动话、优化器、共享变量、模块化、命名空间等问题

越名教而任自然 6650

tensorflow中实现自动、手动梯度下降:GradientDescent、Momentum、Adagrad

tensorflow中提供了自动训练机制(见nsorflow optimizer minimize 自动训练和var_list训练限制),本文主要展现不同的自动梯度下降并附加手动实现。 learning rate、step、计算公式如下: 在预测中,x是关于y的变量,但是在train中,w是L的变量,x是不可能变化的。所以,知道为什么weights叫Variable了吧(强行瞎解释一发)...

huqinwei的专栏 4510

人工智能基础_机器学习012_手写梯度下降代码演示_手动写代码完成梯度下降_并实现梯度下降可视化---人工智能工作笔记0052

其中,`figsize`参数用于设置图形的宽度和高度,单位为英寸。可以看到上面我们那个公式,现在我们用梯度下降实现一下,比如我们有一堆数据,但是没有方程的情况下,我们来看一下如果计算,对应的w值也就是seta值对吧,没有方程我们可以使用梯度下降。然后我们把这个画布的,x,y坐标画出来,这里是plt.(x1,y1) 这里对吧,这里就把这个一元二次方程画出来了,就是一个开口向上的曲线.梯度下降刚开始的时候,下降会快,然后慢慢的,x和x-1 的,间距,也就是步幅,或者说学习率会越来越小,当我们比如这里规定,当。

添柴程序猿的专栏 596

Lesson 4.3 梯度下降(Gradient Descent)基本原理与手动实现

梯度下降基本原理与学习率,梯度下降一般建模流程与多维梯度下降,梯度下降算法评价

每天进步一点点! 1506

21、TensorFlow 基础与线性回归实战

本文详细介绍了 TensorFlow 的基础操作与线性回归实战内容,涵盖会话管理、计算图构建与执行、节点值的生命周期管理等基本概念。在线性回归部分,讲解了使用 TensorFlow 进行正规方程求解、手动与自动计算梯度、优化器应用、小批量训练、模型保存与恢复等关键步骤,并介绍了如何使用 TensorBoard 实现训练过程的可视化。此外,还总结了代码示例、训练流程、常见问题及注意事项,为 TensorFlow 初学者提供了系统的学习路径和实践指导。

u8v9w0x1y的博客 59

20、使用TensorFlow进行线性回归及相关操作

本文详细介绍了如何使用TensorFlow进行线性回归,涵盖正规方程、梯度下降法、模型保存与恢复、以及使用TensorBoard进行可视化训练过程等内容。同时提供了实际代码示例,并探讨了特征工程、超参数调优、模型评估等优化建议,帮助读者更好地理解和应用线性回归模型。

lilh34434的博客 107

【机器学习-基础算法】梯度下降法

俗话说,没有对比就没有伤害,为了体现出Tensorflow2.0,PyTorch等深度学习框架的便捷性,这次我们使用科学计算库Numpy来实现在整个机器学习领域中最重要,也是最基础的迭代优化算法----梯度下降法。 话不多说,上菜 导包: import numpy as np from sklearn import datasets import matplotlib.pyplot as plt %matplotlib inline 计算误差 def total_error_of_calcul

gecko 314

梯度下降详解(包含简单代码示例)

梯度下降算法详解,包括原理讲解和算法实例,简单易懂

python梯度下降法实现线性回归_梯度下降法实现线性回归(python手动实现+Tensorflow实现)...

1.梯度下降法介绍1.1梯度梯度是指一个多元函数,对每一个参数求偏导,所得到的向量就是梯度。 eg:上述相当于标量函数对向量变量进行求导,所得到得即时梯度,而多是高维函数对高位变量进行求导,得到的则是雅可比矩阵。1.2梯度下降法梯度下降法,简单来说,就是以一定的学习率$a$,或者说是步长,从当前位置,向梯度方向 下降。从数学公式上来看: ,即进行了一次梯度下降。其中学习率为 ,这个参数是十分重要的...

weixin_39676034的博客 1044

YOLOv8验证的命令以及计算coco指标

好久不看代码,都不知道怎么验证的了,来记录一下。1、计算coco指标。

毕竟是Shy哥 1481

CGAL-5.6的安装与编译(Win10+vs2022+CGAL-5.6+Boost1.82.0)

CGAL是Computational Geometry Algorithms Library(计算几何算法库)的缩写,C++的高效算法库。CGAL只是一个头文件库(从5.0版本开始),这意味着CGAL无需编译,只需安装好CGAL的依赖项即可。CGAL5.6。

baidu_34931359的博客 3902

python minimize_梯度下降法实现线性回归(python手动实现+Tensorflow实现)

1.梯度下降法介绍1.1梯度梯度是指一个多元函数,对每一个参数求偏导,所得到的向量就是梯度。 eg: 上述相当于标量函数对向量变量进行求导,所得到得即时梯度,而多是高维函数对高位变量进行求导,得到的则是雅可比矩阵。1.2梯度下降法梯度下降法,简单来说,就是以一定的学习率$a$,或者说是步长,从当前位置,向梯度方向 下降。从数学公式上来看: ,即进行了一次梯度下降。其中学习率为 ,这个参数是...

weixin_39735288的博客 368

【车辆动力学】专栏目录汇总

车辆动力学知识目录汇总

CrazyRabbit的博客 1713

灵活使用Tensorflow执行梯度下降算法

之前写过有关tensorflow中各种梯度的意义了,这里结合一下梯度下降算法,讲一下如何使用tensorflow进行相关梯度下降算法的实验。 还是再啰嗦一遍吧。。嫌不够仔细的可以参见: https://blog.youkuaiyun.com/edward_zcl/article/details/90345318 声明: 参考官方文档 参考tensorflow学习笔记(三十) 关于神经网络中的梯度计算,推荐吴...

edward_zcl的博客 1140

PostgreSQL 在 Windows操作系统 无管理员权限情况下的部署详解

但是因为使用默认5432端口,我们修改了端口,所以连接报错,需要修改local连接信息,右键-属性修改相应信息即可,方式同上。(也别太任意吧,个人习惯工具放在不包含中文及特殊字符的目录,另外目录名尽量简短,避免不必要的麻烦)图中我解压到了自己的tools\postgresql18。1)如果想修改默认的5432端口,找到初始化目录中的(上面的tools\postgresql18\。此处替换成你的实际目录\tools\postgresql18\pgsql\pgAdmin 4\runtime。

dong_zhi2328的博客 1117

「JS逆向三百例」JS逆向HIKVISION-视频监控的前端密码加密

本文详细分析了HIKVISION-海康威视监控前端登录过程中密码的加密机制,通过逆向工程解析了其 JavaScript 加密逻辑,重点研究了HIKVISION-海康威视监控的前端密码SHA256加密算法的实现。基于逆向分析结果,使用 Python 模拟了HIKVISION-海康威视监控的登录流程,最终实现了自动化登录功能。本文旨在为安全研究人员提供技术参考,帮助理解前端加密机制,并强调技术研究的合法性和合规性。

布啦啦 1096

深度学习之线性回归算法(二)底层手写实现

tensorflow框架和线性回归算法 tensorflow三部曲 定义计算 开启会话 执行计算

繁华三千东流水不舍昼夜的博客 519

SCI一区论文投稿终极技巧:Expert Systems With Applications;Knowledge-Based Systems

投稿计算机1区论文(如KBS、ESWA)的核心技巧包括:1)关键词选择需平衡范围与相关性,避免过细或过泛;2)研究内容聚焦单一核心创新点,避免内容分散;3)必须设计消融实验量化创新点的贡献;4)公开实验代码和数据集,确保可验证性;5)合理使用AI工具仅辅助写作,核心内容需自主完成;6)实验数据必须真实可靠。特别强调1区期刊对创新性和实验严谨性的高要求,需避免常见拒稿原因如内容分散、缺乏验证等。这些策略可提高投稿成功率,但前提是研究本身具有实质性创新。

ZhangJiqun&191cm&85kg 1152

tensorflow实现线性回归

文章目录计算图归一化实现梯度下降手动梯度下降自动微分 用 tensorflow 实现一个线性回归程序简单了解tensorflow的一些基本操作。 计算图 tensorflow 的本质是用Python构建一个计算图,然后用优化后的C++代码来运行这个图,因此适用于大型机器学习和分布式计算中。 构建一个图: import tensorflow as tf # 构建图 x=tf.Variable(3,n...

Joovo的博客 856

LVGL嵌入式GUI工程化架构与多窗口实践

嵌入式GUI开发中,LVGL作为轻量级图形库,其核心价值在于高效渲染与事件驱动机制。理解LVGL的对象树模型、资源管理机制(如RAW图像、静态字体)和屏幕生命周期,是构建稳定界面的基础。结合FreeRTOS等实时操作系统,可实现低功耗、高响应的交互体验。典型应用场景包括智能电表、HMI人机界面、工业控制面板等对内存敏感、需长期运行的设备。本文以微信式多窗口架构为范例,深入解析LVGL工程化落地的关键路径:分层目录结构、窗口模块封装、状态机式登录逻辑、TabView多页导航及图表/仪表盘动态可视化,覆盖从资源

weixin_36001279的博客 88

使用Python从图像中提取表格

python 实现图片表格提取

qq_30895747的博客 2570

TensorFlow2.0学习三之线性回归

TensorFlow2.0学习笔记(三)线性回归Numpy下的线性回归TensorFlow 下的线性回归 一个实际问题,某城市在 2013 年 - 2017 年的房价如下表所示: 现在,我们希望通过对该数据进行线性回归,即使用线性模型 y = ax + b 来拟合上述数据,此处 a 和 b 是待求的参数。 首先,定义数据,进行归一化操作 import numpy as np X_raw = np...

墨夜之枫的博客 773

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

手动实现线性回归

手动实现线性回归

weixin_44360866的博客 492

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

第一个梯度下降算法 am

import numpy as np X = 2*np.random.random((6,3))-1 print X W0 = np.array([[12],[2],[4]]) print W0 Y=np.dot(X,W0) w = 2*np.random.random((3,1))-1 print w for  j in xrange(1,6000):     l= np.dot(X,w)   ...

cjneo的专栏 340

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

tf.gradients实现回归

参考:1、Tensorflow-吴恩达老师课程笔记 2、利用 tf.gradients 在 TensorFlow 中实现梯度下降1理论 2使用TensorFlow 内置的优化器对 数据集进行回归 3利用 tfgradients 在 TensorFlow 中实现梯度下降1、理论1、动量梯度下降法 参考:Tensorflow-吴恩达老师课程笔记 2、使用TensorFlow 内置的优化器对 数据集

风吴痕的博客 1269

线性回归实例

#手动计算线性回归 import tensorflow as tf import numpy as np import keras data=[]#保存样本集的列表 for i in range(100):#循环采样100个点 x=np.random.uniform(-10.,10.)#随机采样输入x #采样高斯噪声 eps=np.random.normal(0.,0.1) #得到模型的输出 y=1.477*x+0.089+eps data.append([

Keep_Trying_Go的博客 396
上一篇: LeetCode 212. 单词搜索 II 字典树 回溯 C++
下一篇: tensorboard summary使用
BeforeEasy
博客等级 码龄10年 92粉丝 207原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值