def _get_keras_utils(self): # This function determines the keras package type of the Estimator based on the passed # optimizer and model and updates _keras_pkg_type parameter. model_type = None model = self.getModel() if model: if isinstance(model, tf.keras.Model): model_type = TF_KERAS elif is_instance_of_bare_keras_model(model): model_type = BARE_KERAS else: raise ValueError( "model has to be an instance of tensorflow.keras.Model or keras.Model" ) optimizer_type = None optimizer = self.getOptimizer() if optimizer: if isinstance(optimizer, str): optimizer_type = None elif isinstance(optimizer, tf.keras.optimizers.Optimizer): optimizer_type = TF_KERAS elif is_instance_of_bare_keras_optimizer(optimizer): optimizer_type = BARE_KERAS else: raise ValueError("invalid optimizer type") types = set([model_type, optimizer_type]) types.discard(None) if len(types) > 1: raise ValueError( 'mixed keras and tf.keras values for optimizers and model') elif len(types) == 1: pkg_type = types.pop() super(KerasEstimator, self)._set(_keras_pkg_type=pkg_type) if pkg_type == TF_KERAS: return TFKerasUtil elif pkg_type == BARE_KERAS: return BareKerasUtil else: raise ValueError("invalid keras type")
def _get_keras_utils(self, model=None): # infer keras package from model model = self.getModel() if model: if isinstance(model, tf.keras.Model): pkg_type = TF_KERAS elif is_instance_of_bare_keras_model(model): pkg_type = BARE_KERAS else: raise ValueError( "model has to be an instance of tensorflow.keras.Model or keras.Model") super(KerasModel, self)._set(_keras_pkg_type=pkg_type) if pkg_type == TF_KERAS: return TFKerasUtil elif pkg_type == BARE_KERAS: return BareKerasUtil else: raise ValueError("invalid keras type") raise ValueError("model is not set")