diff --git a/keras_contrib/constraints.py b/keras_contrib/constraints.py index c9b9c2a..52ef38e 100644 --- a/keras_contrib/constraints.py +++ b/keras_contrib/constraints.py @@ -1,7 +1,5 @@ from __future__ import absolute_import from . import backend as K -from keras.utils.generic_utils import get_from_module - from keras.constraints import * diff --git a/keras_contrib/layers/advanced_activations.py b/keras_contrib/layers/advanced_activations.py index 44e625d..75a8e73 100644 --- a/keras_contrib/layers/advanced_activations.py +++ b/keras_contrib/layers/advanced_activations.py @@ -1,4 +1,4 @@ -from .. import initializations +from .. import initializers from keras.engine import Layer from keras.utils.generic_utils import get_custom_objects from .. import backend as K diff --git a/keras_contrib/layers/core.py b/keras_contrib/layers/core.py index 4c5da2c..38fbd7f 100644 --- a/keras_contrib/layers/core.py +++ b/keras_contrib/layers/core.py @@ -12,15 +12,13 @@ import warnings from .. import backend as K from .. import activations -from .. import initializations +from .. import initializers from .. import regularizers from .. import constraints from keras.engine import InputSpec from keras.engine import Layer -from keras.engine import Merge from keras.utils.generic_utils import func_dump from keras.utils.generic_utils import func_load -from keras.utils.generic_utils import get_from_module from keras.utils.generic_utils import get_custom_objects diff --git a/keras_contrib/layers/embeddings.py b/keras_contrib/layers/embeddings.py index 65cde1d..2e01bbe 100644 --- a/keras_contrib/layers/embeddings.py +++ b/keras_contrib/layers/embeddings.py @@ -1,7 +1,7 @@ from __future__ import absolute_import from .. import backend as K -from .. import initializations +from .. import initializers from .. import regularizers from .. import constraints from keras.engine import Layer diff --git a/keras_contrib/layers/local.py b/keras_contrib/layers/local.py index 6b8cbf0..70fd06b 100644 --- a/keras_contrib/layers/local.py +++ b/keras_contrib/layers/local.py @@ -3,9 +3,9 @@ from __future__ import absolute_import from .. import backend as K from .. import activations -from .. import initializations +from .. import initializers from .. import regularizers from .. import constraints from keras.engine import Layer from keras.engine import InputSpec -from keras.utils.np_utils import conv_output_length +from keras.utils.conv_utils import conv_output_length diff --git a/keras_contrib/layers/normalization.py b/keras_contrib/layers/normalization.py index 179f2e4..557b71c 100644 --- a/keras_contrib/layers/normalization.py +++ b/keras_contrib/layers/normalization.py @@ -1,5 +1,5 @@ from keras.engine import Layer, InputSpec -from .. import initializations, regularizers +from .. import initializers, regularizers from .. import backend as K import numpy as np diff --git a/keras_contrib/layers/pooling.py b/keras_contrib/layers/pooling.py index bc67865..eebfd22 100644 --- a/keras_contrib/layers/pooling.py +++ b/keras_contrib/layers/pooling.py @@ -4,4 +4,4 @@ from __future__ import absolute_import from .. import backend as K from keras.engine import Layer from keras.engine import InputSpec -from keras.utils.np_utils import conv_output_length +from keras.utils.conv_utils import conv_output_length diff --git a/keras_contrib/layers/recurrent.py b/keras_contrib/layers/recurrent.py index 9ceb01f..e85dc22 100644 --- a/keras_contrib/layers/recurrent.py +++ b/keras_contrib/layers/recurrent.py @@ -4,9 +4,9 @@ import numpy as np from .. import backend as K from .. import activations -from .. import initializations +from .. import initializers from .. import regularizers from keras.engine import Layer from keras.engine import InputSpec -from keras.layers.recurrent import time_distributed_dense +from keras.layers.recurrent import _time_distributed_dense diff --git a/keras_contrib/metrics.py b/keras_contrib/metrics.py index fa1d0fe..768803a 100644 --- a/keras_contrib/metrics.py +++ b/keras_contrib/metrics.py @@ -1,8 +1,2 @@ from . import backend as K -from keras.utils.generic_utils import get_from_module - from keras.metrics import * - - -def get(identifier): - return get_from_module(identifier, globals(), 'metric') diff --git a/keras_contrib/objectives.py b/keras_contrib/objectives.py deleted file mode 100644 index c6a763e..0000000 --- a/keras_contrib/objectives.py +++ /dev/null @@ -1,63 +0,0 @@ -from __future__ import absolute_import - -from keras.objectives import * - -import keras_contrib.backend as KC - - -def get(identifier): - return get_from_module(identifier, globals(), 'objective') - - -class DSSIMObjective(): - def __init__(self, k1=0.01, k2=0.03, kernel_size=3, max_value=1.0): - """ - Difference of Structural Similarity (DSSIM loss function). Clipped between 0 and 0.5 - Note : You should add a regularization term like a l2 loss in addition to this one. - :param k1: Parameter of the SSIM (default 0.01) - :param k2: Parameter of the SSIM (default 0.03) - :param kernel_size: Size of the sliding window (default 3) - :param max_value: Max value of the output (default 1.0) - """ - self.__name__ = "DSSIMObjective" - self.kernel_size = kernel_size - self.k1 = k1 - self.k2 = k2 - self.max_value = max_value - self.c1 = (self.k1 * self.max_value) ** 2 - self.c2 = (self.k2 * self.max_value) ** 2 - self.dim_ordering = K.image_dim_ordering() - self.backend = KC.backend() - - def __int_shape(self, x): - return KC.int_shape(x) if self.backend == "tensorflow" else KC.shape(x) - - def __call__(self, y_true, y_pred): - # There are additional parameters for this function - # Note: some of the 'modes' for edge behavior do not yet have a gradient definition in the Theano tree - # and cannot be used for learning - - kernel = [self.kernel_size, self.kernel_size] - y_true = KC.reshape(y_true, [-1] + list(self.__int_shape(y_pred)[1:])) - y_pred = KC.reshape(y_pred, [-1] + list(self.__int_shape(y_pred)[1:])) - patches_pred = KC.extract_image_patches(y_pred, kernel, kernel, "valid", self.dim_ordering) - patches_true = KC.extract_image_patches(y_true, kernel, kernel, "valid", self.dim_ordering) - - # Reshape to get the var in the cells - bs, w, h, c1, c2, c3 = self.__int_shape(patches_pred) - patches_pred = KC.reshape(patches_pred, [-1, w, h, c1 * c2 * c3]) - patches_true = KC.reshape(patches_true, [-1, w, h, c1 * c2 * c3]) - # Get mean - u_true = KC.mean(patches_true, axis=-1) - u_pred = KC.mean(patches_pred, axis=-1) - # Get variance - var_true = K.var(patches_true, axis=-1) - var_pred = K.var(patches_pred, axis=-1) - # Get std dev - std_true = K.sqrt(var_true + KC.epsilon()) - std_pred = K.sqrt(var_pred + KC.epsilon()) - - ssim = (2 * u_true * u_pred + self.c1) * (2 * std_pred * std_true + self.c2) - denom = (K.square(u_true) + K.square(u_pred) + self.c1) * (var_pred + var_true + self.c2) - ssim /= denom # no need for clipping, c1 and c2 make the denom non-zero - return K.mean((1.0 - ssim) / 2.0) diff --git a/keras_contrib/optimizers.py b/keras_contrib/optimizers.py index c23ae0c..9eec080 100644 --- a/keras_contrib/optimizers.py +++ b/keras_contrib/optimizers.py @@ -1,19 +1,3 @@ from __future__ import absolute_import - -from six.moves import zip - from . import backend as K -from keras.utils.generic_utils import get_from_module, get_custom_objects - -if K.backend() == 'tensorflow': - import tensorflow as tf - - -def get(identifier, kwargs=None): - if K.backend() == 'tensorflow': - # Wrap TF optimizer instances - if isinstance(identifier, tf.train.Optimizer): - return TFOptimizer(identifier) - # Instantiate a Keras optimizer - return get_from_module(identifier, globals(), 'optimizer', - instantiate=True, kwargs=kwargs) +from keras.optimizers import * diff --git a/keras_contrib/regularizers.py b/keras_contrib/regularizers.py index c9688f3..113ea81 100644 --- a/keras_contrib/regularizers.py +++ b/keras_contrib/regularizers.py @@ -1,10 +1,3 @@ from __future__ import absolute_import from . import backend as K -from keras.utils.generic_utils import get_from_module - from keras.regularizers import * - - -def get(identifier, kwargs=None): - return get_from_module(identifier, globals(), 'regularizer', - instantiate=True, kwargs=kwargs)