              Input tensor, or list/tuple of input tensors
  
  
      def compute_output_shape(self, input_shape: tuple[int, ...]) -> tuple[int, ...]:
          """Computes the output shape of the layer.
  
          Assumes that the layer will be built to match that input shape provided.
  
 
</s> remove         self.input_spec = keras.layers.InputSpec(ndim=4)
 </s> add  </s> remove     def get_config(self):
 </s> add     def get_config(self) -> dict[str, T.Any]: </s> remove     :class:`SubPixelUpscaling` layer to speed up the learning process. However, if you are stacking
    multiple :class:`SubPixelUpscaling` blocks, it may increase the number of parameters greatly,
    so the Convolution layer after :class:`SubPixelUpscaling` layer can be removed.
 </s> add     :class:`PixelShuffler` layer to speed up the learning process. However, if you are stacking
    multiple :class:`PixelShuffler` blocks, it may increase the number of parameters greatly,
    so the Convolution layer after :class:`PixelShuffler` layer can be removed.
        Returns
        -------
        :class:`tf.Tensor`
            A tensor or list/tuple of tensors
        """
        retval = self._depth_to_space(inputs, self.scale_factor, self.data_format)
        return retval
              Input tensor, or list/tuple of input tensors
  
        Returns
        -------
        :class:`tf.Tensor`
            A tensor or list/tuple of tensors
        """
        retval = self._depth_to_space(inputs, self.scale_factor, self.data_format)
        return retval
  
      def compute_output_shape(self, input_shape: tuple[int, ...]) -> tuple[int, ...]:
          """Computes the output shape of the layer.
  
          Assumes that the layer will be built to match that input shape provided.
  
keep add keep keep keep keep keep keep
 Training fixes:
  - Fix mixed precision layer storing and switching
  - typofix in _requirements_base.txt
  - lib.model.layers - cleanup, docs and tests fixes
  - lib.model.nn_blocks - typing fixes 
lib/model/layers.py