def named_losses(self) -> Dict[str, tf.Tensor]: losses = self._named_losses.copy() if hasattr(self, '_layers'): for layer in filter_empty_layer_containers( self._layers): # type: ignore[attr-defined] layer_losses = getattr(layer, 'named_losses', None) if layer_losses: for name, loss in layer_losses.items(): assert name not in losses, f'Loss names must be unique, but there are two losses called {name}!' losses[name] = loss return losses
def _list_all_layers(obj): if isinstance(obj, training_lib.Model): return obj.layers else: return trackable_layer_utils.filter_empty_layer_containers(obj._layers) # pylint: disable=protected-access
def layers(self): return layer_utils.filter_empty_layer_containers(self._layers)