news 2026/4/15 12:03:18

Flow-Planner疑问汇总

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Flow-Planner疑问汇总

一、Flow-Planner中ODE求解器使用的Midpoint和两倍步数的Euler法有啥区别?

#位置在torchdiffeq/torchdiffeq/_impl/fixed_grid.pyclassEuler(FixedGridODESolver):order=1def_step_func(self,func,t0,dt,t1,y0):f0=func(t0,y0,perturb=Perturb.NEXTifself.perturbelsePerturb.NONE)returndt*f0,f0classMidpoint(FixedGridODESolver):order=2def_step_func(self,func,t0,dt,t1,y0):half_dt=0.5*dt f0=func(t0,y0,perturb=Perturb.NEXTifself.perturbelsePerturb.NONE)y_mid=y0+f0*half_dtreturndt*func(t0+half_dt,y_mid),f0

写成公式,Euler(欧拉)法
xt+Δt=xt+Δt⋅v(xt,t) x_{t+\Delta t}=x_t+\Delta t \cdot v(x_t,t)xt+Δt=xt+Δtv(xt,t)

Midpoint法,分两步
xt+Δt2=xt+Δt2⋅v(xt,t)xt+Δt=xt+Δt⋅v(xt+Δt2,t+Δt2) \begin{align*} x_{t+ \frac{\Delta t}{2}}=x_t+ \frac{\Delta t}{2} \cdot v(x_t,t) \\ x_{t+ \Delta t}=x_t+ \Delta t \cdot v(x_{t+ \frac{\Delta t}{2}},t+\frac{\Delta t}{2}) \end{align*}xt+2Δt=xt+2Δtv(xt,t)xt+Δt=xt+Δtv(xt+2Δt,t+2Δt)

首先给出结论

midpoint ≠ 两倍步数的 Euler 即使在相同步长总预算下,midpoint 在“方向正确性”和稳定性上本质更强,而不是简单“多算一次”。Euler ×2 是先走到中点,再走到下一个点,而midpoint是利用中点得到的方向,从起点开始走。

原因是

第一步都一样,第二步的起点不同,两倍euler是从中点时刻(t+Δt2t+\frac{\Delta t}{2}t+2Δt)开始,midpoint从最初时刻ttt开始,所以midpoint和两倍步数的Euler是不一样的。
为啥midpoint就比Euler效果好?为啥midpoint是二阶求解器,euler就是一阶呢?
这里需要用到泰勒展开公式,
对ODE:dxdt=f(x,t)\frac{dx}{dt} = f(x,t)dtdx=f(x,t)做泰勒展开
x(t+Δt)=x(t)+Δtf(xt,t)+Δt22ddtf(xt,t)+O(Δt3) x(t+\Delta t)= x(t)+ \Delta t f(x_t,t)+ \frac{\Delta t^2}{2}\frac{d}{dt}f(x_t,t)+ O(\Delta t^3)x(t+Δt)=x(t)+Δtf(xt,t)+2Δt2dtdf(xt,t)+O(Δt3)
euler求解只用到了Δtf(xt,t)Δtf(x t,t)Δtf(xt,t),所以是一阶的。

midpoint?????

二、classifier-free guidence时的系数为啥大于1



对应代码

ifself.use_cfg:u_cond,u_uncond=torch.chunk(u,2)# the unconditioned batch is the first halfu=(1-self.cfg_weight)*u_uncond+self.cfg_weight*u_cond#速度场组合
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/8 17:45:50

STM32智能大棚浇花花盆

目录 STM32智能大棚浇花花盆概述核心功能硬件组成软件实现应用场景 源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! STM32智能大棚浇花花盆概述 STM32智能大棚浇花花盆是一种基于STM32微控制器的自动化种植系统,通过传感器…

作者头像 李华
网站建设 2026/4/12 3:18:58

STM32智能宠物喂食

目录 STM32智能宠物喂食系统概述核心功能硬件组成软件设计应用场景扩展功能 源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! STM32智能宠物喂食系统概述 STM32智能宠物喂食系统是一种基于STM32微控制器的自动化解决方案,通…

作者头像 李华
网站建设 2026/4/11 18:36:27

计算机毕业设计springboot基于农科所农作物信息管理系统的设计与实现 基于SpringBoot的农业科研院所作物数据智慧管理平台的设计与实现面向农科机构的SpringBoot作物全生命周期

计算机毕业设计springboot基于农科所农作物信息管理系统的设计与实现8h3n8w22 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。在“互联网农业”快速渗透的今天,农科所…

作者头像 李华
网站建设 2026/4/7 18:40:16

学习日记day64

Day64_0121专注时间:目标是:5h30~6h。实际:5h47min每日任务:饭后的休息(25min),学习间歇的休息(15min)都用手表计时器来监督{step1}40min二刷1道力扣hot100昨天的题再做一…

作者头像 李华
网站建设 2026/4/12 10:19:36

springboot_ssm807古诗词数字化分享平台--论文

目录具体实现截图摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 摘要 随着数字化技术的快速发展,传统文化资源的保护与传承面临新的机遇与挑战。古诗词作为中华优秀传统文化的重…

作者头像 李华
网站建设 2026/4/7 16:16:54

UE5 C++(43):用 timeLine 实现开关门

(222)概述:本节里会为 timeLineActor 继续添加盒体碰撞组件,还有一个门,当 character 角色来,发生碰撞时,让那个门(静态网络体组件)旋转。碰撞的方面的设置,在…

作者头像 李华