That's a thing worth discussing. It is certainly more general, but there are DBM-specific optimizations which are not integrated into the `BoltzmannMachine` class yet (for example, sampling odd-numbered layers and even-numbered layers in two passes instead of sampling each layer at a time).

I though about automating this a bit more, but I'm not sure it's a good idea. Maybe it would be better to leave the optimization as a user's responsibility through some sort of generalized SamplingProcedure class. I'd like to discuss that with you.