新闻详情

新闻详情

首页 / 资讯中心 / 详情

flow matching 伪代码-1

发布时间:2026/10/1 7:20:41来源:尧图网络
flow matching 伪代码-1
小记训练随机取一条从噪声x0x_0x0​到数据x1x_1x1​的路径学习这条路径的速度。推理从噪声出发用模型预测的速度场积分 ODE逐步走到数据分布。训练时模型学到的并不是某一个具体样本的“直线”而是在所有条件路径的监督下最终学习一个能够把噪声分布运输到数据分布的整体 velocity field。训练伪代码CFM / Rectified Flow线性路径# model(x_t, t):# 给定当前状态 x_t 和时间 t# 预测此时应该沿着哪个方向移动即速度场 v_theta(x_t, t)## x1:# 从真实数据分布中采样的数据例如真实图像# x1 ~ p_dataforx1indataloader:# ---------------------------------------------------------# 1. 采样起点噪声和时间# ---------------------------------------------------------# 从标准高斯分布采样初始状态# x0 ~ N(0, I)## x0 是生成过程的起点推理时也会从这样的随机噪声开始x0randn_like(x1)# 随机采样时间 t ∈ [0, 1]## t 0 : 完全处于噪声端 x0# t 1 : 完全到达真实数据端 x1## [B, 1, 1, 1] 表示对 batch 中每个样本独立采样一个时间# 后续通过广播机制与 [B, C, H, W] 的图像进行计算trand_uniform([B,1,1,1])# t ~ Uniform(0, 1)# ---------------------------------------------------------# 2. 构造训练时的中间状态 x_t# ---------------------------------------------------------# 在线性路径straight-line path下# 将 x0 和 x1 进行线性插值## x_t (1 - t) * x0 t * x1## 因此# t 0 - x_t x0# t 1 - x_t x1## 可以理解为# x0 -------- x1# x_t## 训练时并不是让模型自己走到 x_t# 而是直接根据已知的 x0、x1 构造任意时间点的 x_t。x_t(1-t)*x0t*x1# ---------------------------------------------------------# 3. 计算 Conditional Flow Matching 的目标速度# ---------------------------------------------------------# 对线性路径## x_t (1 - t)x0 tx1## 对 t 求导## dx_t / dt x1 - x0## 因此真实的目标速度是## target_v x1 - x0## 它表示# 从当前 x_t 出发如果沿着这条 x0 - x1 的直线路径走# 此时应该朝哪个方向移动以及移动多快。## 注意# target_v 与 t 无关但它对应的是当前这条# x0 - x1 条件路径的速度。target_vx1-x0# ---------------------------------------------------------# 4. 模型预测速度并进行优化# ---------------------------------------------------------# 模型只看到# 当前状态 x_t# 当前时间 t## 模型不知道训练时真正采样出来的 x0 和 x1# 它需要学习根据 x_t、t 推断正确的速度方向。pred_vmodel(x_t,t)# 使用 MSE 让模型预测的速度接近目标速度## L ||v_theta(x_t, t) - (x1 - x0)||²## 通过大量不同的 x0、x1、t 训练后# 模型学习整个数据分布上的 velocity field。lossmse_loss(pred_v,target_v)# 反向传播并更新模型参数loss.backward()optimizer.step()optimizer.zero_grad()推理伪代码欧拉法解 ODE# model(x_t, t):# 训练好的速度场模型## 输入# 当前状态 x_t# 当前时间 t## 输出# 当前时间点的速度 v_theta(x_t, t)## N:# ODE 数值积分的步数# N 越大通常积分越精确但推理计算量也越大# ---------------------------------------------------------# 1. 从噪声分布采样初始状态# ---------------------------------------------------------# 生成过程从标准高斯噪声开始## x(0) ~ N(0, I)## 这对应训练时的 x0。## 后续通过学习到的 velocity field# 将这个噪声逐渐运输到数据分布。xrandn([B,C,H,W])# ---------------------------------------------------------# 2. 将连续时间 [0, 1] 离散化# ---------------------------------------------------------# 将 [0, 1] 划分成 N 个小区间## dt 1 / N## 因此## t_0 0# t_1 dt# ...# t_N 1## ODE## dx/dt v_theta(x, t)dt1.0/N# ---------------------------------------------------------# 3. 使用 Euler 方法求解 ODE# ---------------------------------------------------------foriinrange(N):# 当前时间点## t 从 0 逐渐增加到接近 1ti/N# -----------------------------------------------------# 根据当前状态和时间预测 velocity# -----------------------------------------------------## v v_theta(x_t, t)## velocity 可以理解为# “在当前 x_t 和当前时间 t 下# 下一瞬间应该往哪个方向移动”vmodel(x,t)# -----------------------------------------------------# Euler 数值积分# -----------------------------------------------------## ODE## dx/dt v_theta(x, t)## Euler 离散化## x_{tdt}# x_t dt * v_theta(x_t, t)## 每一步都根据当前 velocity 向前走一小步。xxdt*v# ---------------------------------------------------------# 4. 得到最终生成结果# ---------------------------------------------------------# 经过 N 次 ODE 更新后## x ≈ x(1)## 此时状态已经从初始噪声分布逐渐运输到了# 模型学习到的数据分布。x_genx最核心的逻辑其实可以浓缩成一句话训练随机取x0x_0x0​、x1x_1x1​、ttt↓构造xt(1−t)x0tx1x_t (1-t)x_0 tx_1xt​(1−t)x0​tx1​↓计算真实速度vx1−x0v x_1-x_0vx1​−x0​↓训练模型学习vθ(xt,t)v_θ(x_t, t)vθ​(xt​,t)推理x0 N(0,I)x_0 ~ N(0,I)x0​N(0,I)↓不断计算vθ(xt,t)v_θ(x_t,t)vθ​(xt​,t)↓x←xdt⋅vθ(x,t)x ← x dt·v_θ(x,t)x←xdt⋅vθ​(x,t)↓最终得到x1x_1x1​≈ 数据样本所以 Flow Matching 本质上是在训练一个“速度场”训练阶段告诉模型“在各种xt,tx_t,txt​,t下应该往哪里走”推理阶段再把这个速度场当作 ODE 的右端项从噪声一路积分到数据。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

dash-html-components 演进全解:从 0.1.0 到 1.1.4 的变更历史、核心属性机制与源码印证 2026/10/1 8:22:46

dash-html-components 演进全解:从 0.1.0 到 1.1.4 的变更历史、核心属性机制与源码印证

前端后端数据可视化 【免费下载链接】dash Data Apps & Dashboards for Python. No JavaScript Required. 项目地址: https://gitcode.com/gh_mirrors/da/dash 点击查看 免费下载 导读 本文以 components/dash-html-components/CHANGELOG.md 为骨架&#xff0…

阅读更多 →
Jev编码智能体:从模型到工具,如何接入Codex提升编程效率 2026/10/1 8:22:46

Jev编码智能体:从模型到工具,如何接入Codex提升编程效率

这几天不管是技术群还是信息流,Jev这个词出现的频率高得有点反常。很多人第一次看到它,脑子里冒出来的问题基本都一样:这到底是个新模型,还是又有人把老东西换个名字重新包装?先说结论——从目前官方放出的信息和社区的…

阅读更多 →
API-Security-Checklist 全解析:覆盖设计、测试与发布全流程的 API 安全加固清单 2026/10/1 8:22:45

API-Security-Checklist 全解析:覆盖设计、测试与发布全流程的 API 安全加固清单

网络安全应用安全 【免费下载链接】API-Security-Checklist Checklist of the most important security countermeasures when designing, testing, and releasing your API 项目地址: https://gitcode.com/gh_mirrors/ap/API-Security-Checklist 点击查看 免费下载…

阅读更多 →
计算机视觉学术谱系指南:awesome-computer-vision 项目 people.md 人物家谱深度解读 2026/10/1 8:22:39

计算机视觉学术谱系指南:awesome-computer-vision 项目 people.md 人物家谱深度解读

教程计算机视觉 【免费下载链接】awesome-computer-vision A curated list of awesome computer vision resources 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-computer-vision 点击查看 免费下载 在 awesome-computer-vision 这个计算机视觉资源精…

阅读更多 →
2026年10月校招系统哪家好用?校园招聘系统我推荐用友大易! 2026/10/1 8:22:26

2026年10月校招系统哪家好用?校园招聘系统我推荐用友大易!

进入2026年秋招、春招周期以后,大型企业面对的往往不是几百份简历,而是大量候选人、多批次招聘、多个招聘渠道以及跨区域招聘协同。因此如果要问2026年10月校招系统哪家好用,我会重点推荐用友大易,其校园招聘解决方案覆盖雇主品牌…

阅读更多 →
服装进销存软件推荐:2026年6款主流工具排行榜 2026/10/1 8:22:26

服装进销存软件推荐:2026年6款主流工具排行榜

摘要:服装店最怕色码乱:一个款几十个颜色尺码,录错一个就配错货、压一批库存。本文从色码建档、开单配货、库存精度三个维度,给出6款主流工具的推荐。一、服装进销存软件是什么?它和普通进销存差在哪服装进销存软件&am…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉