  # TESTED WITH PY3.10
  tqdm>=4.65
  psutil>=5.9.0
  numexpr>=2.8.4
  numpy>=1.25.0
  opencv-python>=4.7.0.0
 
</s> remove         if self.data_format == 'channels_last':
            pooled = K.std(inputs, axis=[1, 2])
        else:
            pooled = K.std(inputs, axis=[2, 3])
        return pooled

 </s> add  </s> remove class L2_normalize(keras.layers.Layer):  # type:ignore[name-defined]  # pylint:disable=invalid-name
    """ Normalizes a tensor w.r.t. the L2 norm alongside the specified axis.
 </s> add         if data_format == "channels_first":
            inputs = tf.transpose(inputs, (0, 3, 1, 2)) </s> remove for name, obj in inspect.getmembers(sys.modules[__name__]):
 </s> add for name_, obj in inspect.getmembers(sys.modules[__name__]): </s> remove     >>> u = SubPixelUpscaling(scale_factor=2)(x)
 </s> add     >>> u = PixelShuffler(size=(2, 2))(x) </s> remove class _GlobalPooling2D(keras.layers.Layer):  # type:ignore[name-defined]
    """Abstract class for different global pooling 2D layers.
 </s> add class SubPixelUpscaling(tf.keras.layers.Layer):
    """ Sub-pixel convolutional up-scaling layer.

  tqdm>=4.65
  psutil>=5.9.0
  numexpr>=2.8.4
  numpy>=1.25.0
  opencv-python>=4.7.0.0
replace 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 
requirements/_requirements_base.txt