docs: public INDArray reconstructionError(INDArray data) {
          if (!hasLossFunction()) {
              throw new IllegalStateException(
                              "Cannot use reconstructionError method unless the variational autoencoder is "
                                              + "configured with a standard loss function (via LossFunctionWrapper). For VAEs utilizing a reconstruction "
                                              + "distribution, use the reconstructionProbability or reconstructionLogProbability methods "
                                              + layerId());
          }
  
          INDArray pZXMean = activate(data, false, LayerWorkspaceMgr.noWorkspaces());
          INDArray reconstruction = generateAtMeanGivenZ(pZXMean); //Not probabilistic -> "mean" == output
  
          if (reconstructionDistribution instanceof CompositeReconstructionDistribution) {
              CompositeReconstructionDistribution c = (CompositeReconstructionDistribution) reconstructionDistribution;
              return c.computeLossFunctionScoreArray(data, reconstruction);
          } else {
  
              LossFunctionWrapper lfw = (LossFunctionWrapper) reconstructionDistribution;
              ILossFunction lossFunction = lfw.getLossFunction();
  
              //Re: the activation identity here - the reconstruction array already has the activation function applied,
              // so we don't want to apply it again. i.e., we are passing the output, not the pre-output.
              return lossFunction.computeScoreArray(data, reconstruction, new ActivationIdentity(), null);
          }
      }