MCPcopy Create free account
hub / github.com/ChenWu98/cycle-diffusion / run

Function run

model/lib/latentdiff/sample_diffusion.py:105–137  ·  view source on GitHub ↗
(model, logdir, batch_size=50, vanilla=False, custom_steps=None, eta=None, n_samples=50000, nplog=None)

Source from the content-addressed store, hash-verified

103 return log
104
105def run(model, logdir, batch_size=50, vanilla=False, custom_steps=None, eta=None, n_samples=50000, nplog=None):
106 if vanilla:
107 print(f'Using Vanilla DDPM sampling with {model.num_timesteps} sampling steps.')
108 else:
109 print(f'Using DDIM sampling with {custom_steps} sampling steps and eta={eta}')
110
111
112 tstart = time.time()
113 n_saved = len(glob.glob(os.path.join(logdir,'*.png')))-1
114 # path = logdir
115 if model.cond_stage_model is None:
116 all_images = []
117
118 print(f"Running unconditional sampling for {n_samples} samples")
119 for _ in trange(n_samples // batch_size, desc="Sampling Batches (unconditional)"):
120 logs = make_convolutional_sample(model, batch_size=batch_size,
121 vanilla=vanilla, custom_steps=custom_steps,
122 eta=eta)
123 n_saved = save_logs(logs, logdir, n_saved=n_saved, key="sample")
124 all_images.extend([custom_to_np(logs["sample"])])
125 if n_saved >= n_samples:
126 print(f'Finish after generating {n_saved} samples')
127 break
128 all_img = np.concatenate(all_images, axis=0)
129 all_img = all_img[:n_samples]
130 shape_str = "x".join([str(x) for x in all_img.shape])
131 nppath = os.path.join(nplog, f"{shape_str}-samples.npz")
132 np.savez(nppath, all_img)
133
134 else:
135 raise NotImplementedError('Currently only sampling for unconditional models supported.')
136
137 print(f"sampling of {n_saved} images finished in {(time.time() - tstart) / 60.:.2f} minutes.")
138
139
140def save_logs(logs, path, n_saved=0, key="sample", np_path=None):

Callers 1

Calls 3

save_logsFunction · 0.85
custom_to_npFunction · 0.85

Tested by

no test coverage detected