in tensorflow_hub/keras_layer.py [0:0]
def _setup_layer(self, trainable=False, **kwargs):
"""Constructs keras layer with relevant weights and losses."""
# Initialize an empty layer, then add_weight() etc. as needed.
super().__init__(trainable=trainable, **kwargs)
# Add trainable and non-trainable weights from the callable.
if hasattr(self._func, "trainable_variables"):
for v in self._func.trainable_variables:
self._add_existing_weight(v, trainable=True)
trainable_variables = {id(v) for v in self._func.trainable_variables}
else:
trainable_variables = set()
if hasattr(self._func, "variables"):
for v in self._func.variables:
if id(v) not in trainable_variables:
self._add_existing_weight(v, trainable=False)
# Forward the callable's regularization losses (if any).
if hasattr(self._func, "regularization_losses"):
for l in self._func.regularization_losses:
if not callable(l):
raise ValueError(
"hub.KerasLayer(obj) expects obj.regularization_losses to be an "
"iterable of callables, each returning a scalar loss term.")
self.add_loss(self._call_loss_if_trainable(l)) # Supports callables.