• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • 安全教程
  • 安全设置
  • 杀毒防毒
  • 病毒查杀
  • 脚本攻防
  • 入侵防御
  • 工具使用
  • 业界动态
  • Exploit
  • 漏洞分析
  • 加密解密
  • 手机安全
  • 区块链
您的位置:首页 > 网络安全 >区块链 > 在Python实现梯度下降优化算法

在Python实现梯度下降优化算法

作者:区块网 字体:[增加 减小] 来源:互联网

区块网向大家分享了在Python实现梯度下降优化算法,其中包含Python,梯度下降等知识点,遇到此问题的同学们可以参考下
每一个机器学习工程师都在寻求改进他们的模型的性能。优化是机器学习中最重要的领域之一。优化使我们能够为我们的问题案例选择与机器学习算法或方法找到相关的最佳参数。优化算法有几种类型。也许最流行的是梯度下降优化算法。许多机器学习工程师第一次遇到梯度下降法是在他们对python网络的介绍中。在本教程中,我们将教你如何在python中从头实现梯度下降。首先,梯度下降法到底是什么?

什么是梯度下降法?

梯度下降法是一种通过重复步骤使机器学习模型收敛到最小值的优化算法。从本质上讲,梯度下降法是通过求出函数输出最小的值来最小化函数的。通常,这个函数通常是一个损失函数。损失函数衡量的是我们的模型与实际情况相比的糟糕程度。因此,我们只有减少这种损失才有意义。

一个简单的梯度下降算法如下:

·获得使F(x)最小化的函数
·初始化一个值x,从该值开始下降就进行优化
·指定一个学习率,该学习率将确定要下降多少步,或收敛到最小值的速度有多快
·得到x的导数(下降)
·继续下降,这个值的导数乘以学习速率
·不断更新x的值
·检查您的停止状态,看是否要停止
·如果条件满足,停止。如果没有,则使用新的x值继续第4步,并保持重复算法

在Python中实现梯度下降

在这里,我们将使用python实现梯度下降的简单表示。我们将创建一个任意的损失函数,并试图找到该函数的局部最小值。

我函数:- f(x)= x35 x2+ 7

我们将首先使用一组从-1到3的值(为了确保陡峭的曲线,任意进行选择)来视化这个函数


import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

creating the function and plotting it
function = lambda x: (x ** 3)-(3 *(x ** 2))+7
#Get 1000 evenly spaced numbers between -1 and 3 (arbitratil chosen to ensure steep curve)
x = np.linspace(-1,3,500)
#Plot the curve
plt.plot(x, function(x))
plt.show()


结果如下:

然后,我们将继续为梯度下降创建两个函数:

第一个是导数函数:这个函数接受x的值并根据我们指定的初始函数返回它的导数。如下图所示:

第二个是阶跃函数:这是实际梯度下降发生的函数。该函数接受x的初始值或先前值,根据通过学习率采取的步骤对其进行更新,并输出达到停止条件的x的最小值。对于停止条件,我们将使用精确停止。这意味着,当旧x和更新x之间的绝对差大于一个值时,算法应该停止。函数还会输出x的最小值,以及达到该值所需的步骤或下降次数。
该函数如下图所示:


def deriv(x):

'''
Description: This function takes in a value of x and returns its derivative based on the
initial function we specified.

Arguments:

x - a numerical value of x

Returns:

x_deriv - a numerical value of the derivative of x

'''

x_deriv = 3* (x**2) - (6 * (x))
return x_deriv
def step(x_new, x_prev, precision, l_r):

'''
Description: This function takes in an initial or previous value for x, updates it based on
steps taken via the learning rate and outputs the most minimum value of x that reaches the precision satisfaction.

Arguments:

x_new - a starting value of x that will get updated based on the learning rate

x_prev - the previous value of x that is getting updated to the new one

precision - a precision that determines the stop of the stepwise descent

l_r - the learning rate (size of each descent step)

Output:

1. Prints out the latest new value of x which equates to the minimum we are looking for
2. Prints out the the number of x values which equates to the number of gradient descent steps
3. Plots a first graph of the function with the gradient descent path
4. Plots a second graph of the function with a zoomed in gradient descent path in the important area

'''

# create empty lists where the updated values of x and y wil be

您可能想查找下面的文章:

  • 用Python从零开始创建区块链
  • 在Python实现梯度下降优化算法
  • 不到 50 行的 Python 代码构建最小的区块链
  • 如何使用Python编写一个简单且安全的区块链数据库API?

相关文章

  • 雷电网络(Raiden)是什么 雷电问答
  • 数字货币实际上是如何工作的?
  • 科普 | 以太坊概况
  • ImToken钱包使用教程
  • Parity钱包使用教程
  • 从技术现实理解区块链:基于SQL模型创建BQL
  • 教你如何生成以太坊钱包!
  • 瑞波币Ripple(XRP)最新详细教程
  • BigONE交易平台,最新版注册和认证详细教程来了
  • 胖协议 vs 胖 dApp vs 胖钱包

文章分类

  • 安全教程
  • 安全设置
  • 杀毒防毒
  • 病毒查杀
  • 脚本攻防
  • 入侵防御
  • 工具使用
  • 业界动态
  • Exploit
  • 漏洞分析
  • 加密解密
  • 手机安全
  • 区块链

最近更新的内容

    • 加密经济学:区块链技术前景之路基
    • YObit.net 数字货币交易平台注册使用教程
    • SegWit2x 客户端安装教程
    • 如何创建比特币纸质钱包或纸质账单
    • 区块链内容版权概念项目介绍
    • 泰达币USDT是什么?USDT如何兑换美元?
    • 如何使用 imToken 购买 .luxe 顶级域名
    • 不到 50 行的 Python 代码构建最小的区块链
    • 图文--一分钟了解比特币&区块链
    • 区块链技术原理解析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有