pytorch基本运算-导数和f-string

news2025/6/6 21:46:37

引言

在前序对机器学习的探究过程中,我们已经深刻体会到人工智能到处都有微分求导运算,相关文章链接包括且不限于:
BP神经网络
逻辑回归
对于pytorch张量,求导运算必不可少,所以本次就专门来学习一下。

f-string的用法

f-string是python语言里面一种简洁且强大的字符串格式化方法,对内容的引用和输出较为高效。

确实也可以不适用f-string,但刚好学习到导数计算比较简单,所以就一起学习一下。

f-string以“f”或“F”开头,用单引号“‘”和“’”引用自由添加的字符串,如果要引用变量,就用大括号“{}”包起来。

常规输出

常规输出格式:f+‘输出内容+{“引用内容”}’。示例代码:

h = 0.1234567
print(f'h当前值:{h}')


这个代码的运行效果:h当前值:0.1234567
在这里插入图片描述

控制小数位数输出

常规输出格式:f+‘输出内容+{“引用内容:.xf”}’。

“引用内容:.xf”的意思是,对浮点数f,保留x位小数。示例代码:

h = 0.1234567
print(f'h当前值:{h}')
print(f'h当前值(1位小数):{h:.1f}')
print(f'h当前值(3位小数):{h:.3f}')
print(f'h当前值(5位小数):{h:.5f}')
print(f'h当前值(8位小数):{h:.8f}')
print(f'h当前值(10位小数):{h:.10f}')

在这里插入图片描述
由图2可见,h的当前值按照x的设置量调整了小数位数。

如果想把代码写得紧凑,比如写成一个for循环,上述代码可优化为:

h = 0.1234567
print(f'h当前值:{h}')
print(f'h当前值(1位小数):{h:.1f}')
print(f'h当前值(3位小数):{h:.3f}')
print(f'h当前值(5位小数):{h:.5f}')
print(f'h当前值(8位小数):{h:.8f}')
print(f'h当前值(10位小数):{h:.10f}')
for i in range(10):
    print(f'h当前值保留{i}位小数:{h:.{i}f}')

需要注意的是,引用的变量应该用大括号"{}"包起来。

代码运行效果为:
在这里插入图片描述

pytorch导数

计算导数的定义式为:
f ′ ( x ) = lim ⁡ x → 0 f ( x + h ) − f ( x ) h f^{'}(x)=\lim_{x \to 0}\frac{f(x+h)-f(x)}{h} f(x)=x0limhf(x+h)f(x)
基于此,继续优化代码:

h = 0.1234567
print(f'h当前值:{h}')
print(f'h当前值(1位小数):{h:.1f}')
print(f'h当前值(3位小数):{h:.3f}')
print(f'h当前值(5位小数):{h:.5f}')
print(f'h当前值(8位小数):{h:.8f}')
print(f'h当前值(10位小数):{h:.10f}')
for i in range(5):
    print(f'h当前值保留{i}位小数:{h:.{i}f}')

# 定义原函数
def f(x):
    return 3*x**2-3*x

# 定义求导函数
def numerical_lim(f, x, h):
    return (f(x + h) - f(x)) / h

# 修改偏移量
h=0.1
for i in range(10):
    print(f'h={h:.5f}.时的函数值为{f(h):.5f},导数值为{numerical_lim(f,1,h):.8f}')
    h*=0.1

这里先定义了原函数:

def f(x):
return 3x**2-3x

然后定义了原函数的导数:

def numerical_lim(f, x, h):
return (f(x + h) - f(x)) / h

最后通过改变自变量偏移量的形式,不断逼近导数的真实值:

h=0.1 for i in range(10):
print(f’h={h:.5f}.时的函数值为{f(h):.5f},导数值为{numerical_lim(f,1,h):.8f}')
h*=0.1

代码运行后的效果为:
在这里插入图片描述
可见,随着偏移量的减小,在x=1位置处,函数f(x)的导数值不断趋向准确值3。

细节说明

由于小数位数的限制,如果继续减小h到h=0.000 000 000 000 000 100,函数f(x)的值和导数值都会变成0。
对此有两种解释:

  1. x此时本身是无穷小量,在f(x)=3x**2-3x中,极小的x计算了平方后,已经远远小于x本身,函数f(x)的值和导数值都是无穷小量,计算效果输出0。
  2. Python 的 float 类型使用 IEEE 754 双精度 64 位浮点数,提供约15-17位十进制有效数字,一旦超出就可能不准。h=0.000000000000000100的1出现在第16位,此时的计算结果就会出现不准。

可运行此时的代码测试:

h = 0.1234567
print(f'h当前值:{h}')
print(f'h当前值(1位小数):{h:.1f}')
print(f'h当前值(3位小数):{h:.3f}')
print(f'h当前值(5位小数):{h:.5f}')
print(f'h当前值(8位小数):{h:.8f}')
print(f'h当前值(10位小数):{h:.10f}')
for i in range(5):
    print(f'h当前值保留{i}位小数:{h:.{i}f}')

# 定义原函数
def f(x):
    return 3*x**2-3*x

# 定义求导函数
def numerical_lim(f, x, h):
    return (f(x + h) - f(x)) / h

# 修改偏移量
h=0.1
for i in range(20):
    print(f'i={i},h={h:.18f}.时的函数值为{f(h):.18f},导数值为{numerical_lim(f,1,h):.18f}')
    h*=0.1

在这里插入图片描述

总结

学习了pytorch导数运算和相关的f-string使用方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2402149.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5.RV1126-OPENCV 图形计算面积

一.图形面积、弧长计算介绍 前面我们已经把图形轮廓的检测、画框等功能讲解了一遍。这次主要结合轮廓检测的 API 去计算图形的面积,这些面积可以是矩形、圆形等等。图形面积计算和弧长计算常用于车辆识别、桥梁识别等重要功能,常用的 API 如 contourArea…

【Android基础回顾】一:Binder机制是什么?有什么用?

Android中的Binder机制是Android系统中最核心和最基础的进程间通讯机制。 1 什么是进程间通讯机制(IPC)? 众所周知,Android系统基于Linux开发,Linux系统里面本来就有进程间通讯机制。 1.1 Linux的IPC(Inter-Process Communication)概览 它…

LeetCode 高频 SQL 50 题(基础版) 之 【高级查询和连接】· 上

题目:1731. 每位经理的下属员工数量 题解: select employee_id,name,reports_count,average_age from Employees t1,(select reports_to,count(*) reports_count,round(avg(age)) average_agefrom Employeeswhere reports_to is not nullgroup by repor…

资产智慧管理安全监测中心

在数字经济高速发展的今天,资产管理的智能化已成为企业降本增效的核心竞争力。从智慧园区到古建筑群,从交通枢纽到城市电网,资产智慧管理安全监测中心正以物联网、人工智能、数字孪生等技术为支撑,构建起资产全生命周期的“智慧大…

从零开始的云计算——番外实战,iptables防火墙项目

目录 一网络规划 二项目要求 三环境准备 1防火墙设置 2PC1设置 3PC2设置 4服务器S1设置 四环境检测 1内网链接 2外网连接 五防火墙配置及测试 1内部网络中的pc1采用SNAT访问外部互联网,但是无法ping到内部网关。 ​编辑​编辑 2内部网络服务器s1通过DN…

【基于阿里云搭建数据仓库(离线)】IDEA导出Jar包(包括第三方依赖)

目录 方法一: 方法二 1.双击"package”即可进行打包呈jar 2.双击后就会自动打包生成jar了, 生成的jar在这个目录下 3.右击,点击“复制路径/引用”,即可获得“绝对路径”、“根路径”等相关信息 前提: 在pop.…

【物联网-TCP/IP】

物联网-TCP/IP ■ TCP/IP■■■ 添加链接描述 ■ TCP/IP ■ ■ ■

Halcon光度立体法

1、光度立体法,可用于将对象的三维形状与其二维纹理(例如打印图像)分离。需要用不同方向而且已知照明方向的多个光源,拍摄同一物体的至少三张图像。请注意,所有图像的相机视角必须相同。 物体的三维形状主要被计算为三…

cocos3.X的oops框架oops-plugin-excel-to-json改进兼容多表单导出功能

在使用oops框架的过程中,它的导出数据并生成数据结构的插件oops-plugin-excel-to-json有些小的坑点,为满足我个人习惯,对此部分进行了一个小的修改,有需要的拿去用,记录下供大家参考; 一、配置:…

每日八股文6.3

每日八股-6.3 Mysql1.COUNT 作用于主键列和非主键列时,结果会有不同吗?2.MySQL 中的内连接(INNER JOIN)和外连接(OUTER JOIN)有什么主要的区别?3.能详细描述一下 MySQL 执行一条查询 SQL 语句的…

Kubernetes (k8s)版本发布情况

Kubernetes (k8s)版本发布情况 代码放在 GitHub - kubernetes/kubernetes: Production-Grade Container Scheduling and Management https://github.com/kubernetes/kubernetes/releases 文档放在 kubernetes.io各个版本变更等: https://github.com/kubernetes/kubernet…

QT 5.9.2+VTK8.0实现等高线绘制

项目下载链接:QT5.9.2VTK8.0实现等高线绘制资源-CSDN文库 示例如下: 主要代码如下: #include "vtkRenderer.h" #include "vtkRenderWindow.h" #include "vtkRenderWindowInteractor.h" #include "vtkPo…

兼容老设备!EtherNet/IP转DeviceNet网关解决储能产线通讯难题

在新能源行业飞速发展的当下,工业自动化水平的高低直接影响着企业的生产效率与产品质量。JH-EIP-DVN疆鸿智能ETHERNET/IP和DEVICENET作为工业领域常用的通信协议,它们之间的转换应用在新能源生产线上发挥着关键作用。本文重点探讨ETHERNETIP从站转DEVICE…

LabVIEW自感现象远程实验平台

LabVIEW开发自感现象远程实验平台,通过整合 NI数据采集设备、菲尼克斯(Phoenix Contact)继电器模块及罗技(Logitech)高清摄像头,实现远程数据采集、仪器控制与实时监控三大核心功能。平台突破传统实验装置局…

Python----目标检测(《YOLOv3:AnIncrementalImprovement》和YOLO-V3的原理与网络结构)

一、《YOLOv3:AnIncrementalImprovement》 1.1、基本信息 标题:YOLOv3: An Incremental Improvement 作者:Joseph Redmon, Ali Farhadi 机构:华盛顿大学(University of Washington) 发表时间:2018年 代…

算法篇 八大排序(冒泡 插入 选择 堆 希尔 快排 归并 计数)

目录 引言 1.冒泡排序 思路 代码实现 2.选择排序 思路 代码实现(存在易错点) 3.插入排序 思路 代码实现 4.希尔排序 思路 代码实现 5.堆排序 思路 代码实现 6.快速排序(快排) 一.三路划分 思路 代码实现 二.自…

音视频之视频压缩编码的基本原理

系列文章: 1、音视频之视频压缩技术及数字视频综述 2、音视频之视频压缩编码的基本原理 一、预测编码: 1、预测编码的基本概念: 预测法是最简单、实用的视频压缩编码方法,经过压缩编码后传输的并不是像素本身的取样值&#xff0…

IDEA 包分层显示设置

方法一(用的IntelliJ IDEA 2024.1.4版本): 找到项目视图设置入口:在左侧Project(项目)面板的顶部,有个三个点...的按钮 ,点击它。 进入树形外观配置:在弹出的菜单中&…

深度学习和神经网络 卷积神经网络CNN

1.什么是卷积神经网络 一种前馈神经网络;受生物学感受野的机制提出专门处理网格结构数据的深度学习模型 核心特点:通过卷积操作自动提取空间局部特征(如纹理、边缘),显著降低参数量 2.CNN的三个结构特征 局部连接&a…

PlayWright | 初识微软出品的 WEB 应用自动化测试框架

Playwright是微软大厂背书的跨平台 WEB 应用自动化测试框架,支持多开发语言(TypeScript、JavaScript、.Net、Python、Java)及多浏览器(Chromium、WebKit、Firefox),同时支持移动端测试。 安装 playwright …