228 words
1 minute
diffusion-policy
2026-04-12
No Tags
0

ConditionalSample

InferencePath

yes

no

TrainingPath

yes

no

epsilon

sample

compute_loss

normalize obs and action

obs_as_global_cond

encode first n_obs_steps -> global_cond

encode all steps; concat action and obs

condition_mask from mask_generator

sample noise and timesteps

add noise to trajectory

apply conditioning on noisy trajectory

predict with model

prediction_type

target = noise

target = trajectory

masked MSE loss

reduce mean to scalar loss

Init: DiffusionUnetImagePolicy.__init__

Parse shape_meta: action_dim, obs_feature_dim

Build ConditionalUnet1D

Create LowdimMaskGenerator

Create LinearNormalizer

Store horizon, n_obs_steps, n_action_steps

predict_action

normalize obs

obs_as_global_cond

encode first To obs -> global_cond

cond_data: zeros B,T,Da; cond_mask: false

encode obs -> features B,To,Do

cond_data: B,T,Da+Do; fill obs and mask

conditional_sample

take nsample first Da dims

unnormalize action

slice action window

return action and action_pred

trajectory <- random normal

set timesteps

for each t

apply condition mask

model forward

scheduler step to prev_sample

final condition enforce

return trajectory

diffusion-policy
https://ny-wakeup.github.io/myblog/posts/diffusion-policy/
Author
Nwaky
Published at
2026-04-12
License
CC BY-NC-SA 4.0