It was my understanding that when force hard classification is switched on in Class3D, the per-particle ESS values should be 1.0 by definition - this has certainly been the case in runs so far.
However, in a recent run with force hard classification switched on, I see particles with ESS of either 1 or 2, and a final average ESS of 1.8 - is this expected under certain circumstances, or is it a bug?
Nothing especially unusual about the parameters, with the possible exception of a high-ish target resolution (3Å) and non-default number of epochs (10) and batch size (10000).
@olibclarke – This is very strange. You are right that ESS should be 1.0 by definition. I tried for a bit to reproduce this behaviour to no avail :(. Based on your description, it seems like the class posteriors are somehow in a state where they sum to 2.0 rather than to 1.0.
The “effective size” is the sum of the posteriors across all particles for each class, so class 5 must have most of this superfluous probability mass (i.e., a particle may have a posterior that looks like [0,1,0,0,0,1]; it is assigned to class 1 but contributes ‘size’ to class 1 and 5).
Definitely not expected. When we re-order classes, we recompute the assignments via an argmax call on the class posteriors. I suspect that some particles have class posteriors that are ‘two hot’ (as above) and upon reordering get switched (since argmax will return the first index if there are numerically identical values).
One quick follow up: do you see ESS values of 2 from the very first O-EM iteration?