It seems that for each epoch, the fd was constructed by
end = start + envsperbatch
mbenvinds = slice(start, end, None)
fd = {ph : buf[mbenvinds] for (ph, buf) in ph_buf}
which didn't shuffle the samples in a minibatch
Did I miss somewhere do the shuffle operation? If not, why don't we need to shuffle the samples?