  -r _requirements_base.txt
  # tf2.2 is last version that tensorboard logging works with old Keras
  protobuf>= 3.19.0,<3.20.0  # TF has started pulling in incompatible protobuf
  tensorflow>=2.2.0,<2.3.0
  plaidml-keras==0.7.0
 
</s> remove tensorflow-macos>=2.8.0,<2.9.0
tensorflow-deps>=2.8.0,<2.9.0
tensorflow-metal>=0.4.0,<0.5.0
 </s> add numpy>=1.22.0
tensorflow-macos>=2.8.0,<2.10.0
tensorflow-deps>=2.8.0,<2.10.0
tensorflow-metal>=0.4.0,<0.6.0 </s> remove             # following bug in TF 2.8 when writing records:
 </s> add             # following bug in TF 2.8/2.9 when writing records: </s> remove         self._tensorboard.on_train_batch_end(self._model.iterations, logs=logs)
        if get_tf_version() == 2.8:
            # Bug in TF 2.8 where batch recording got deleted.
 </s> add         if get_tf_version() > 2.7:
            # Bug in TF 2.8/2.9 where batch recording got deleted. </s> remove             for name, value in logs.items():
                tf.summary.scalar(
                    "batch_" + name,
                    value,
                    step=self._model._model._train_counter)  # pylint:disable=protected-access
 </s> add             with tf.summary.record_if(True), self._tensorboard._train_writer.as_default():  # noqa pylint:disable=protected-access,not-context-manager
                for name, value in logs.items():
                    tf.summary.scalar(
                        "batch_" + name,
                        value,
                        step=self._tensorboard._train_step)  # pylint:disable=protected-access
        else:
            self._tensorboard.on_train_batch_end(self._model.iterations, logs=logs)
numpy>=1.18.0,<1.20.0
  -r _requirements_base.txt
  # tf2.2 is last version that tensorboard logging works with old Keras
numpy>=1.18.0,<1.20.0
  protobuf>= 3.19.0,<3.20.0  # TF has started pulling in incompatible protobuf
  tensorflow>=2.2.0,<2.3.0
  plaidml-keras==0.7.0
keep add keep keep keep
 Update TF to 2.9
    - Update TF to 2.7 to 2.9
    - Bump dependencies
    - Remove decode from pynvml calls
    - force keras predict functions to non-verbose
    - update tests
    - update Tensorboard logging
    - Update docs 
requirements/requirements_amd.txt