in horovod/spark/keras/estimator.py [0:0]
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")