当前位置: 首页 > news >正文

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#速度场组合
http://www.jsqmd.com/news/280688/

相关文章:

  • Java毕设项目:基于springboot的隧道云视频监控管理信息平台设计与实现(源码+文档,讲解、调试运行,定制等)
  • STM32智能大棚浇花花盆
  • 知光项目用户资料模块
  • MySQL:更新语句执行流程详解
  • STM32心率血氧手环(可报警)
  • [langchain 内部数据传递层级]
  • STM32智能宠物喂食
  • 2026年选择敏捷咨询机构:从“工具应用”到“价值落地”的转型关键
  • 论文降AI率必备!5款工具横向测评,到底哪款能帮你将AIGC率降低80%以上
  • 2026年马年零食大礼盒推荐Top5:从年味到健康的“不踩雷”选型指南
  • Java计算机毕设之基于Java+springboot的隧道云视频监控管理信息平台设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • [Unreal shader]深度缓冲重建世界坐标
  • logging库使用教程
  • 【毕业设计】基于springboot的隧道云视频监控管理信息平台设计与实现(源码+文档+远程调试,全bao定制等)
  • SpringBoot:封装 starter
  • 【课程设计/毕业设计】基于springboot的隧道云视频监控管理信息平台设计与实现隧道内事故、火灾、车辆滞留等问题监察【附源码、数据库、万字文档】
  • 滴滴 wsgsig secdd-challenge
  • RabbitMQ 在大数据领域的故障排查与解决方案
  • Linux 内核漏洞提权
  • 连接 AI 的隐形纽带:深度解构 MCP 传输层——从 Stdio 到 SSE 的实战抉择与架构差异
  • 计算机毕业设计springboot基于农科所农作物信息管理系统的设计与实现 基于SpringBoot的农业科研院所作物数据智慧管理平台的设计与实现面向农科机构的SpringBoot作物全生命周期
  • 测试转网络安全如何弯道超车?
  • Java计算机毕设之基于springboot的智慧医疗网上预约系统智慧医疗服务-智慧医疗服务平台(完整前后端代码+说明文档+LW,调试定制等)
  • 微服务架构演进实战 从单体到微服务的拆分原则与DDD入门
  • python mqgg 发送 json 文件
  • 学习日记day64
  • Java毕设项目:基于springboot的智慧医疗网上预约系统(源码+文档,讲解、调试运行,定制等)
  • GGUF、Safetensors、ONNX三种格式
  • springboot_ssm815大学生校园图书借阅购买管理系统--论文
  • #对象模型