Source code for hypergol.base_tensorflow_model_block

# pylint: disable=E0611, W0235

import inspect

from tensorflow.python.keras import layers


[docs]class BaseTensorflowModelBlock(layers.Layer): """Subclasses TensorFlow-Keras layers to provide logical groupings of functionality/layers. Neither ``call()`` nor ``build()`` should be used as those won't be called eventually by the model There are no delayed initialisation in Hypergol models. """
[docs] def __init__(self, *args, blockName=None, **kwargs): """If further keras layers are required, they should be created here""" super(BaseTensorflowModelBlock, self).__init__(*args, **kwargs) self.blockName = blockName or self.__class__.__name__
[docs] def get_config(self): """Function to get the configuration parameters for serialisation""" constructorParameters = inspect.signature(self.__class__.__init__).parameters.keys() config = super(BaseTensorflowModelBlock, self).get_config() for name, value in self.__dict__.items(): if name in constructorParameters: config[name] = value return config
[docs] def build(self, input_shape): """This should not be called""" raise Exception(f'keras.Layer.build() was called in Hypergol block {self.__class__.__name__}')
[docs] def call(self, *args, **kwargs): """This should not be called""" raise Exception(f'keras.Layer.call() was called in Hypergol block {self.__class__.__name__}')