pytorch基本运算-导数和f-string
引言
在前序对机器学习的探究过程中,我们已经深刻体会到人工智能到处都有微分求导运算,相关文章链接包括且不限于:
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)=x→0limhf(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。
对此有两种解释:
- x此时本身是无穷小量,在f(x)=3x**2-3x中,极小的x计算了平方后,已经远远小于x本身,函数f(x)的值和导数值都是无穷小量,计算效果输出0。
- 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使用方法。
相关文章:

pytorch基本运算-导数和f-string
引言 在前序对机器学习的探究过程中,我们已经深刻体会到人工智能到处都有微分求导运算,相关文章链接包括且不限于: BP神经网络 逻辑回归 对于pytorch张量,求导运算必不可少,所以本次就专门来学习一下。 f-string的用…...
impala中更改公网ip为内网ip
实际有时候需求中需要将公网的impala监听ip改为内网的ip 步骤 1,更改配置文件中的ip 1,更改/etc/default/impala中的ip配置重启服务即可在hive元数据同一个节点上要启动sudo service impala-state-store restartsudo service impala-catalog restart所有…...

5.RV1126-OPENCV 图形计算面积
一.图形面积、弧长计算介绍 前面我们已经把图形轮廓的检测、画框等功能讲解了一遍。这次主要结合轮廓检测的 API 去计算图形的面积,这些面积可以是矩形、圆形等等。图形面积计算和弧长计算常用于车辆识别、桥梁识别等重要功能,常用的 API 如 contourArea…...
一键净化Excel数据:高性能Python脚本实现多核并行清理
摘要 本文分享两个基于Python的Excel数据净化脚本,通过多进程并行技术清除工作表内不可见字符、批注、单元格样式等冗余内容,利用OpenPyXL实现底层操作,结合tqdm进度条和进程级任务分配,可快速处理百万级单元格数据。适用于数据分…...

【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…...
移动网页调试的多元路径:WebDebugX 与其他调试工具的组合使用策略
在移动端网页开发中,仅靠一款工具很难覆盖所有调试场景。不同问题类型需要不同的调试维度——有时是网络请求,有时是 DOM 样式,有时是 JS 状态,有时是性能瓶颈。 本文以“多工具协作”为核心思想,结合多个项目经验&am…...

【基于阿里云搭建数据仓库(离线)】IDEA导出Jar包(包括第三方依赖)
目录 方法一: 方法二 1.双击"package”即可进行打包呈jar 2.双击后就会自动打包生成jar了, 生成的jar在这个目录下 3.右击,点击“复制路径/引用”,即可获得“绝对路径”、“根路径”等相关信息 前提: 在pop.…...
【HarmonyOS 5】鸿蒙HarmonyOS —(cordova)研发方案详解
Android、Ios 和 HarmonyOS APP研发分析 Android研发语言Java、Ios研发语言objective-c, HarmonOS研发语言ArkTs和C/C,写了第一句,就会有人反驳,Android和Ios也支持C/C语言,封装成动态库so,然后调用就可以了࿰…...
Linux程序运行日志总结
在Linux系统中,程序运行时产生的日志记录主要通过以下几种方式实现,这些日志有助于排查问题、监控系统行为或审计安全事件: 1. 系统日志(System Logs) 存放路径:通常位于 /var/log/ 目录下。常见日志文件: /var/log/syslog 或 /var/log/messages:通用系统日志(取决于发…...

【物联网-TCP/IP】
物联网-TCP/IP ■ TCP/IP■■■ 添加链接描述 ■ TCP/IP ■ ■ ■...
SAP ECC 与 SAP S/4HANA 技术架构全面对比
SAP ECC 是过去几十年众多企业核心业务系统的基石,涵盖财务、物流、制造等关键领域。然而,随着数字化转型的加速和企业需求的增长,其架构日益显现局限。因此,SAP 推出了新一代 ERP 解决方案——SAP S/4HANA。它不仅在功能上做出优…...

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

cocos3.X的oops框架oops-plugin-excel-to-json改进兼容多表单导出功能
在使用oops框架的过程中,它的导出数据并生成数据结构的插件oops-plugin-excel-to-json有些小的坑点,为满足我个人习惯,对此部分进行了一个小的修改,有需要的拿去用,记录下供大家参考; 一、配置:…...
Spring Boot + OpenAI 构建基于RAG的智能问答系统
一、技术架构设计 1.1 系统架构图 [前端]│▼ (HTTP/REST) [Spring Boot Controller]│▼ (Service Call) [问答处理服务层]├─▶ [知识库检索模块] ──▶ [向量数据库]└─▶ [OpenAI集成模块] ──▶ [OpenAI API]│▼ [结果组装与返回] 1.2 技术选型 组件技术栈版本要求…...
开源量子模拟引擎:Quantum ESPRESSO本地部署教程,第一性原理计算轻松入门!
一、介绍 Quantum ESPRESSO 是一个用于电子结构计算和纳米尺度材料建模的开源计算机代码集成套件,专门用于进行第一性原理(第一性原理)计算,涵盖了电子结构、晶体学和材料性能的模拟。 Quantum ESPRESSO GPU 版本支持GPU加速&am…...
算法blog合集
https://zhuanlan.zhihu.com/p/600245782 https://zhuanlan.zhihu.com/p/696212679 https://zhuanlan.zhihu.com/p/291406172 【推荐系统】DSSM双塔召回2_pair-wise训练和推理-CSDN博客 精通推荐算法1:为什么需要推荐系统(系列文章,建议收…...

每日八股文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…...
CppCon 2015 学习:3D Face Tracking and Reconstruction using Modern C++
1. 3D面部追踪和重建是什么? 3D面部追踪(3D Face Tracking): 实时检测并追踪人脸在三维空间中的位置和姿态(如转头、点头、表情变化等),通常基于摄像头捕获的视频帧。3D面部重建(3D…...
Three.js进阶之音频处理与展示
引擎在对音频处理提供了丰富的接口,本文展示两个音频处理示例。 一、声音可视化 Three.js中的声音可视化是以视觉为核心,以音乐为载体,为音乐提供直观的视觉呈现。通过对音乐数据的分析并结合开发需求,能实现酷炫的视觉效果。在…...
4.2 HarmonyOS NEXT分布式AI应用实践:联邦学习、跨设备协作与个性化推荐实战
HarmonyOS NEXT分布式AI应用实践:联邦学习、跨设备协作与个性化推荐实战 在HarmonyOS NEXT的全场景分布式架构下,AI能力突破设备边界,通过联邦学习保护数据隐私、跨设备任务协作释放算力潜能、个性化推荐实现服务主动化。本文结合华为分布式…...

兼容老设备!EtherNet/IP转DeviceNet网关解决储能产线通讯难题
在新能源行业飞速发展的当下,工业自动化水平的高低直接影响着企业的生产效率与产品质量。JH-EIP-DVN疆鸿智能ETHERNET/IP和DEVICENET作为工业领域常用的通信协议,它们之间的转换应用在新能源生产线上发挥着关键作用。本文重点探讨ETHERNETIP从站转DEVICE…...
健康检查:在 .NET 微服务模板中优雅配置 Health Checks
🚀 健康检查:在 .NET 微服务模板中优雅配置 Health Checks 📚 目录 🚀 健康检查:在 .NET 微服务模板中优雅配置 Health Checks一、背景与意义 🔍二、核心配置 🔧2.1 引入必要的 NuGet 依赖 &…...
【Pytorch学习笔记】模型模块08——AlexNet模型详解
AlexNet模型详解:结构、算法与PyTorch实现 一、AlexNet模型结构 AlexNet是2012年ImageNet竞赛冠军模型,由Alex Krizhevsky等人提出,标志着深度学习在计算机视觉领域的突破。 网络结构(5卷积层 3全连接层)ÿ…...

LabVIEW自感现象远程实验平台
LabVIEW开发自感现象远程实验平台,通过整合 NI数据采集设备、菲尼克斯(Phoenix Contact)继电器模块及罗技(Logitech)高清摄像头,实现远程数据采集、仪器控制与实时监控三大核心功能。平台突破传统实验装置局…...
AppTrace 视角下 App 一键拉起:提升应用转化率的高效方案
官网地址:AppTrace - 专业的移动应用推广追踪平台 在大规模开展 App 推广、用户召回、广告投放、邀请传播等活动时,高效的深度链接方案至关重要。它不仅能缩短用户路径,带来无缝、流畅的跳转体验,更核心的是通过参数传递打通 web…...