yashbhalgat/HashNeRF-pytorch

Undefined 'disps'

ZhaoyangZh opened this issue · 3 comments

disps = np.stack(disps, 0)
if gt_imgs is not None and render_factor==0:
avg_psnr = sum(psnrs)/len(psnrs)
print("Avg PSNR over Test set: ", avg_psnr)
with open(os.path.join(savedir, "test_psnrs_avg{:0.2f}.pkl".format(avg_psnr)), "wb") as fp:
pickle.dump(psnrs, fp)
return rgbs, disps

Variable disps is undefined here, do you mean depths? I tried to replace disps with depths and run python run_nerf.py --config configs/chair.txt --finest_res 512 --log2_hashmap_size 19 --lrate 0.01 --lrate_decay 10, but got exception at the entropy calculation:

try:
entropy = Categorical(probs = torch.cat([weights, 1.0-weights.sum(-1, keepdim=True)+1e-6], dim=-1)).entropy()
except:
pdb.set_trace()

Any ideas on this issue? Thanks in advance.

The depths/disps bug is fixed in #30.
The entropy error seems unrelated to that. Can you please elaborate on the error message you get? Maybe also look at the weights tensor when the exception is caught in the except loop.

I met the same question when training, and the error message is:
ValueError: Expected parameter probs of distribution Categorical to satisfy the constraint Simplex(), but found invalid values

update: seems like it happens when sampled points' weights along a ray all equal to zero. just use .entropy as a function rather than through Categorical.entropy

Fjzd commented

I find weights. sum (-1, keepdim=True)>=1 caused the entropy() to fail.just normalize the weights could solve the problem.