返回顶部
首页 > 资讯 > 后端开发 > Python >Python利用AutoGrad实现自动计算函数斜率和梯度
  • 312
分享到

Python利用AutoGrad实现自动计算函数斜率和梯度

2024-04-02 19:04:59 312人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录1.准备2.计算斜率3.实现一个逻辑回归模型AutoGrad 是一个老少皆宜的 python 梯度计算模块。 对于初高中生而言,它可以用来轻易计算一条曲线在任意一个点上的斜率。

AutoGrad 是一个老少皆宜的 python 梯度计算模块。

对于初高中生而言,它可以用来轻易计算一条曲线在任意一个点上的斜率。

对于大学生、机器学习爱好者而言,你只需要传递给它Numpy这样的标准数据库下编写的损失函数,它就可以自动计算损失函数的导数(梯度)。

我们将从普通斜率计算开始,介绍到如何只使用它来实现一个逻辑回归模型。

1.准备

开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。

(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda,它内置了Python和pip.

(可选2) 此外,推荐大家用vscode编辑器,它有许多的优点

请选择以下任一种方式输入命令安装依赖

1. windows 环境 打开 Cmd (开始-运行-CMD)。

2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。

3. 如果你用的是 VSCode编辑器 或 PyCharm,可以直接使用界面下方的Terminal.

pip install autograd

2.计算斜率

对于初高中生同学而言,它可以用来轻松计算斜率,比如我编写一个斜率为0.5的直线函数:

# 公众号 Python实用宝典
import autograd.numpy as np
from autograd import grad


def oneline(x):
    y = x/2
    return y

grad_oneline = grad(oneline)
print(grad_oneline(3.0))

运行代码,传入任意X值,你就能得到在该X值下的斜率:

(base) G:\push\20220724>python 1.py
0.5

由于这是一条直线,因此无论你传什么值,都只会得到0.5的结果。

那么让我们再试试一个tanh函数:

# 公众号 Python实用宝典
import autograd.numpy as np
from autograd import grad

def tanh(x):
    y = np.exp(-2.0 * x)
    return (1.0 - y) / (1.0 + y)
grad_tanh = grad(tanh)
print(grad_tanh(1.0))

此时你会获得 1.0 这个 x 在tanh上的曲线的斜率:

(base) G:\push\20220724>python 1.py
0.419974341614026

我们还可以绘制出tanh的斜率的变化的曲线:

# 公众号 Python实用宝典
import autograd.numpy as np
from autograd import grad


def tanh(x):
    y = np.exp(-2.0 * x)
    return (1.0 - y) / (1.0 + y)
grad_tanh = grad(tanh)
print(grad_tanh(1.0))

import matplotlib.pyplot as plt
from autograd import elementwise_grad as egrad
x = np.linspace(-7, 7, 200)
plt.plot(x, tanh(x), x, egrad(tanh)(x))
plt.show()

图中蓝色的线是tanh,橙色的线是tanh的斜率,你可以非常清晰明了地看到tanh的斜率的变化。非常便于学习和理解斜率概念。

3.实现一个逻辑回归模型

有了Autograd,我们甚至不需要借用scikit-learn就能实现一个回归模型:

逻辑回归的底层分类就是基于一个sigmoid函数:

import autograd.numpy as np
from autograd import grad

# Build a toy dataset.
inputs = np.array([[0.52, 1.12, 0.77],
                   [0.88, -1.08, 0.15],
                   [0.52, 0.06, -1.30],
                   [0.74, -2.49, 1.39]])
targets = np.array([True, True, False, True])

def sigmoid(x):
    return 0.5 * (np.tanh(x / 2.) + 1)

def loGIStic_predictions(weights, inputs):
    # Outputs probability of a label being true according to logistic model.
    return sigmoid(np.dot(inputs, weights))

从下面的损失函数可以看到,预测结果的好坏取决于weights的好坏,因此我们的问题转化为怎么优化这个 weights 变量:

def training_loss(weights):
    # Training loss is the negative log-likelihood of the training labels.
    preds = logistic_predictions(weights, inputs)
    label_probabilities = preds * targets + (1 - preds) * (1 - targets)
    return -np.sum(np.log(label_probabilities))

知道了优化目标后,又有Autograd这个工具,我们的问题便迎刃而解了,我们只需要让weights往损失函数不断下降的方向移动即可:

# Define a function that returns gradients of training loss using Autograd.
training_gradient_fun = grad(training_loss)

# Optimize weights using gradient descent.
weights = np.array([0.0, 0.0, 0.0])
print("Initial loss:", training_loss(weights))
for i in range(100):
    weights -= training_gradient_fun(weights) * 0.01

print("Trained loss:", training_loss(weights))

运行结果如下:

(base) G:\push\20220724>python regress.py
Initial loss: 2.772588722239781
Trained loss: 1.067270675787016

由此可见损失函数以及下降方式的重要性,损失函数不正确,你可能无法优化模型。损失下降幅度太单一或者太快,你可能会错过损失的最低点。

总而言之,AutoGrad是一个你用来优化模型的一个好工具,它可以给你提供更加直观的损失走势,进而让你有更多优化想象力。

有兴趣的朋友还可以看官方的更多示例代码:https://GitHub.com/HIPS/autograd/blob/master/examples/

到此这篇关于Python利用AutoGrad实现自动计算函数斜率和梯度的文章就介绍到这了,更多相关Python AutoGrad计算函数斜率 梯度内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python利用AutoGrad实现自动计算函数斜率和梯度

本文链接: https://lsjlt.com/news/119603.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python利用AutoGrad实现自动计算函数斜率和梯度
    目录1.准备2.计算斜率3.实现一个逻辑回归模型AutoGrad 是一个老少皆宜的 Python 梯度计算模块。 对于初高中生而言,它可以用来轻易计算一条曲线在任意一个点上的斜率。 ...
    99+
    2024-04-02
  • 利用Python实现自动生成小学生计算题
    目录生成计算题写入Word中过年期间发现小外甥已经上小学了,我姐说老师今天给他们布置了寒假作业:每天坚持做乘法和加减法混合运算。 这我必须帮帮忙,用Python写了一段自动生成小学生...
    99+
    2023-02-07
    Python生成计算题 Python计算题
  • 利用Python实现一个简单的Web汇率计算器
    目录Dash是什么网页搭建步骤安装相关依赖(库)导入相关包构建app构建结果输出函数网页结构Layout搭建callback回调参数设定界面效果前段时间刚接触到前端网页开发,但是对于...
    99+
    2024-04-02
  • 利用Pandas实现对数据进行移动计算
    假设有 10 天的销售额数据,我们想每三天求一次总和,比如第五天的总和就是第三天 + 第四天 + 第五天的销售额之和,这个时候该怎么做呢? S...
    99+
    2024-04-02
  • 利用Python实现简单的Excel统计函数
    目录需求分析解决步骤最终结果技术总结需求分析 根据原始数据,计算出累计和、回撤、连续正确、连续错误、连续正确值与连续错误值6项数据,其中原始数据大于等于0认定为正确,原始数据小于0...
    99+
    2024-04-02
  • 利用Python实现自动生成数据日报
    目录前言需求详解数据处理前言 人生苦短,快学Python! 日报,是大部分打工人绕不过的难题。 对于管理者来说,日报是事前管理的最好抓手,可以了解团队的氛围和状态。可对于员工来说,那...
    99+
    2024-04-02
  • Python+eval函数实现动态地计算数学表达式详解
    目录Python 的 eval()第一个参数:expression第二个参数:globals第三个参数:locals用 eval() 计算表达式布尔表达式数学表达式通用表达式Pyth...
    99+
    2024-04-02
  • Python中怎么利用pandas实现求和运算和非空值个数统计
    今天就跟大家聊聊有关Python中怎么利用pandas实现求和运算和非空值个数统计,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。准备工作本文用到的表格内容如下:先来看一下原始情形:i...
    99+
    2023-06-20
  • 如何利用ChatGPT和Python实现自动问答功能
    如何利用ChatGPT和Python实现自动问答功能引言:随着自然语言处理和人工智能的快速发展,自动问答系统成为各个领域中的热门应用之一。通过使用ChatGPT和Python,我们可以快速实现一个自动问答系统,从而提供高效的问答服务。本文将...
    99+
    2023-10-25
    ChatGPT - ChatGPT 自动问答 - Auto QA Python - Python编程
  • 如何利用Python实现自动生成数据日报
    这篇文章主要讲解了“如何利用Python实现自动生成数据日报”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何利用Python实现自动生成数据日报”吧!需求详解朋友的需求是这样的,他们平时的...
    99+
    2023-07-02
  • 利用Python脚本在Linux平台下实现任务调度与自动化
    利用Python脚本在Linux平台下实现任务调度与自动化在现代的信息技术环境下,任务调度和自动化已经成为了大多数企业必备的工具。而Python作为一种简单、易学且功能丰富的编程语言,在Linux平台下实现任务调度与自动化是非常方便和高效的...
    99+
    2023-10-22
    自动化 Python Linux
  • Python通过内置函数和自写算法DFS实现排列组合
    目录调用内置函数自写算法DFS实现排列组合是数学中的一种常见的计算方法,用于求出从给定的元素中选取若干个元素的所有可能的排列或组合。在Python中,有多种方式可以实现排列组合的计算...
    99+
    2023-05-18
    Python 算法 Python 排列组合
  • 利用GDAL实现栅格影像差值计算及Geoserver自动发布栅格影像
      项目需求  项目需要对两幅栅格影像做差值处理,然后在geoserver上自动发布服务。  项目构想  仔细查阅了很多文献。geoserver上没有提供直接对两幅栅格影像做差值的处理。所以我将步骤分为两步:  1、对影像做差值  2、获取...
    99+
    2023-06-02
  • 怎么用Python装饰器实现函数运行时间的计算
    这篇文章主要介绍“怎么用Python装饰器实现函数运行时间的计算”,在日常操作中,相信很多人在怎么用Python装饰器实现函数运行时间的计算问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Python装饰...
    99+
    2023-06-29
  • 利用Python实现自动生成图文并茂的数据分析
    目录前言1、一行命令,安装这个库2、核心代码模块导入①提前导入相关内容,并且注册字体②注册字体③生成报告前言 reportlab是Python的一个标准库,可以画图、画表格、编辑文字...
    99+
    2024-04-02
  • 如何利用Python和JavaScript的函数来实现快速响应?
    在现代Web应用中,快速响应是非常重要的。用户希望能够在最短的时间内看到他们想要的结果。为了实现快速响应,我们需要使用一些技术来优化我们的代码。Python和JavaScript是两种非常流行的编程语言,它们都提供了优秀的函数来实现快速响...
    99+
    2023-10-02
    javascript 函数 响应
  • python利用Appium实现自动控制移动设备并提取数据功能
    目录1. 安装appium-python-client模块并启动已安装好的环境 1.1 安装appium-python-client模块1.2 启动夜神模拟器1.3 启动a...
    99+
    2024-04-02
  • mysql中怎么利用函数和触发器实现非主键自增
    这篇文章给大家介绍mysql中怎么利用函数和触发器实现非主键自增,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。函数set global log_bin_trust_...
    99+
    2024-04-02
  • 如何使用Python中的内嵌函数和闭包实现一个计数器
    如何使用Python中的内嵌函数和闭包实现一个计数器Python作为一种功能强大的编程语言,提供了很多灵活的工具和技术,使得开发过程变得简单而高效。其中,内嵌函数和闭包是Python中非常重要的概念之一。在本文中,我们将探讨如何利用这两个概...
    99+
    2023-10-22
    闭包 计数器 内嵌函数
  • 利用Python自制网页并实现一键自动生成探索性数据分析报告
    目录前言上传文件以及变量的筛选前言 今天小编带领大家用Python自制一个自动生成探索性数据分析报告这样的一个工具,大家只需要在浏览器中输入url便可以轻松的访问,如下所示: 第一...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作