There is a serious bug in the implementation of _estimate_latent_entropies in evaluate.py that can cause incorrect Mutual Information Gap (MIG) scores.
The code currently uses the following line to reshape after sampling latent codes:
samples_zCx = samples_zCx.index_select(0, samples_x).view(latent_dim, n_samples)
This is not a transpose, but a reshape, and will reorder memory rather than transpose the axes. This yields incorrect results unless the tensor is laid out in memory exactly as expected, which is rare and not robust.
Correct code:
samples_zCx = samples_zCx.index_select(0, samples_x).t()
This bug can cause all downstream mutual information and MIG metric calculations to be silently wrong.
Recommendation: Replace .view(latent_dim, n_samples) with .t() and review all other uses of .view that are intended to transpose axes. Consider adding a test to catch such errors.
Thanks for your attention!