How to?

cfg

Jan 1, 2025
技术学习models
2 Minutes
228 Words

Classifer Guidance:

1
# 1. 网络正常去噪,预测当前步的纯净轨迹或噪声
2
pred_tau = unet(noisy_tau, history_obs, step_k)
3
# 2. 将预测轨迹送入可导的代价函数计算 Cost (必须 Autograd)
4
cost = task_cost_function(pred_tau)
5
# 3. 对输入的高维轨迹求梯度 (告诉它往哪里微调能降低 Cost)
6
grad = autograd.grad(outputs=cost, inputs=noisy_tau)
7
# 4. 在标准去噪更新的基础上,叠加上梯度引导项. scale 与归一化有关 1e-5 ~ 0.05
8
next_noisy_tau = ddpm_step(pred_tau, noisy_tau) - scale * grad

CFG:

1
# 1. 带条件前向:比如输入 prompt="walk forward"
2
pred_cond = unet(noisy_tau, condition="walk forward", step_k)
3
# 2. 无条件前向:将条件置空 prompt="" (Drop-out)
4
pred_uncond = unet(noisy_tau, condition="", step_k)
5
# 3. 计算 CFG 放大后的预测值 (不使用任何 Autograd 梯度)
6
# scale > 1 (比如 7.5),将预测推向更符合条件的方向
7
pred_final = pred_uncond + scale * (pred_cond - pred_uncond)
8
# 4. 用最终预测值进行标准的去噪更新
9
next_noisy_tau = ddpm_step(pred_final, noisy_tau)
Article title:cfg
Article author:Julyfun
Release time:Jan 1, 2025
Copyright 2026
Sitemap