Decision tree hook for subclasses to override.

By default, this method executes the decision tree that determines the components that a Catalog builds. You can extend the components by overriding this or by adding to the constructor of your subclass.

Override this method if you don’t want to use the default components determined here. If you want to use them but add additional components, you should call super()._determine_components() at the beginning of your implementation.

This makes it so that subclasses are not forced to create an encoder config if the rest of their catalog is not dependent on it or if it breaks. At the end of this method, an attribute Catalog.latent_dims should be set so that heads can be built using that information.