From f0020bf86f52b0cdbd6b8c35bc94c327fde83def Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Thu, 14 Feb 2019 15:35:44 +0530 Subject: [PATCH 01/23] Update __init__.py --- keras_contrib/layers/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/keras_contrib/layers/__init__.py b/keras_contrib/layers/__init__.py index bc460c6e6..3968c09b7 100644 --- a/keras_contrib/layers/__init__.py +++ b/keras_contrib/layers/__init__.py @@ -1,5 +1,6 @@ from __future__ import absolute_import +from .advanced_activations.isrlu import ISRLU from .advanced_activations.pelu import PELU from .advanced_activations.srelu import SReLU from .advanced_activations.swish import Swish From e2f6d3b044497d2c4b76e207bf195df8aa8c0422 Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Thu, 14 Feb 2019 15:36:13 +0530 Subject: [PATCH 02/23] Create isrlu.py --- keras_contrib/layers/advanced_activations/isrlu.py | 1 + 1 file changed, 1 insertion(+) create mode 100644 keras_contrib/layers/advanced_activations/isrlu.py diff --git a/keras_contrib/layers/advanced_activations/isrlu.py b/keras_contrib/layers/advanced_activations/isrlu.py new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/keras_contrib/layers/advanced_activations/isrlu.py @@ -0,0 +1 @@ + From 3737f2895cc7ff7ae997b02b2f89e18f33ee84d9 Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Thu, 14 Feb 2019 15:50:34 +0530 Subject: [PATCH 03/23] Update isrlu.py --- .../layers/advanced_activations/isrlu.py | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/keras_contrib/layers/advanced_activations/isrlu.py b/keras_contrib/layers/advanced_activations/isrlu.py index 8b1378917..5019f29ce 100644 --- a/keras_contrib/layers/advanced_activations/isrlu.py +++ b/keras_contrib/layers/advanced_activations/isrlu.py @@ -1 +1,68 @@ +# -*- coding: utf-8 -*- +from keras import backend as K +from keras.layers import Layer + +class ISRLU(Layer): + """Inverse Square Root Linear Unit + See: https://arxiv.org/pdf/1710.09967.pdf by AI Perf + Reference: https://en.wikipedia.org/wiki/Activation_function + Inverse Square Root Linear activation f(α, x): + x >= 0: x + x < 0: x / sqrt(1 + α * x^2) + # Input shape + Arbitrary. Use the keyword argument `input_shape` + (tuple of integers, does not include the samples axis) + when using this layer as the first layer in a model. + # Output shape + Same shape as the input. + # Arguments + alpha: Value of the alpha weights (float) + NOTE : This function can become unstable for + negative values of α (it may return + NaNs). In particular, this happens when + α < 0 and x < -1/sqrt(α) or x > 1/sqrt(α). + If this happens, try limiting the magnitude + of α below a certain threshold, such that + 1 + α * x^2 is always positive. + Alternatively, you can normalize the inputs + into fixed ranges before passing them to ISRLU. + Adjust the value of α based on your specific + dataset and use-case. + # Example + model = Sequential() + model.add(Dense(5, input_shape=(15,)) + model.add(ISRLU(alpha=-0.3)) + """ + def __init__(self, + alpha=0.1, + **kwargs): + + super(ISRLU, self).__init__(**kwargs) + self.alpha = alpha + + def alpha_initializer(self, input_shape): + return self.alpha * K.ones(input_shape) + + def build(self, input_shape): + new_input_shape = input_shape[1:] + self.alphas = self.add_weight(shape=new_input_shape, + name='{}_alphas'.format(self.name), + initializer=self.alpha_initializer, + trainable=False) + self.build = True + + def call(self, x): + def inverse_quadratic_square_root(x): + return x / K.sqrt(1 + self.alphas * K.square(x)) + + return K.switch(K.less(x, K.zeros_like(x)), inverse_quadratic_square_root(x), x) + + def compute_output_shape(self, input_shape): + return input_shape + + def get_config(self): + config = {'alpha': self.alpha} + base_config = super(ISRLU, self).get_config() + base_config['trainable'] = False + return dict(list(base_config.items()) + list(config.items())) From 6e9d6efe81e312dc17bc0750657cf0dbbcda2899 Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Thu, 14 Feb 2019 15:51:14 +0530 Subject: [PATCH 04/23] Create test_isrlu.py --- tests/keras_contrib/layers/advanced_activations/test_isrlu.py | 1 + 1 file changed, 1 insertion(+) create mode 100644 tests/keras_contrib/layers/advanced_activations/test_isrlu.py diff --git a/tests/keras_contrib/layers/advanced_activations/test_isrlu.py b/tests/keras_contrib/layers/advanced_activations/test_isrlu.py new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/tests/keras_contrib/layers/advanced_activations/test_isrlu.py @@ -0,0 +1 @@ + From 28a3a8a569c0c085a51ad378a7f12c4160224519 Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Thu, 14 Feb 2019 15:51:33 +0530 Subject: [PATCH 05/23] Update test_isrlu.py --- .../layers/advanced_activations/test_isrlu.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/keras_contrib/layers/advanced_activations/test_isrlu.py b/tests/keras_contrib/layers/advanced_activations/test_isrlu.py index 8b1378917..ffbad40bb 100644 --- a/tests/keras_contrib/layers/advanced_activations/test_isrlu.py +++ b/tests/keras_contrib/layers/advanced_activations/test_isrlu.py @@ -1 +1,15 @@ +# -*- coding: utf-8 -*- +import pytest +from keras_contrib.utils.test_utils import layer_test +from keras_contrib.layers import ISRLU + +@pytest.mark.parametrize('alpha', [0.2, 0.3, -0.01]) +def test_isrlu(alpha): + layer_test(ISRLU, + kwargs={'alpha': alpha}, + input_shape=(2, 3, 4)) + + +if __name__ == '__main__': + pytest.main([__file__]) From 19fc88eb3315492b81a22d8f13cf53b12e4d3180 Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Thu, 14 Feb 2019 15:53:36 +0530 Subject: [PATCH 06/23] Update CODEOWNERS --- CODEOWNERS | 1 + 1 file changed, 1 insertion(+) diff --git a/CODEOWNERS b/CODEOWNERS index afa98df95..cd1b1b2c9 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -26,6 +26,7 @@ keras_contrib/callbacks/snapshot.py @titu1994 # layers +keras_contrib/layers/advanced_activations/isrlu.py @SriRangaTarun keras_contrib/layers/advanced_activations/sinerelu.py @wilderrodrigues keras_contrib/layers/advanced_activations/swish.py @gabrieldemarmiesse keras_contrib/layers/convolutional/subpixelupscaling.py @titu1994 From 11daeea2d2568d1dce0b79cc044fdf12292ff658 Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Thu, 14 Feb 2019 20:45:17 +0530 Subject: [PATCH 07/23] Fix small mistake in docs --- keras_contrib/layers/advanced_activations/isrlu.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keras_contrib/layers/advanced_activations/isrlu.py b/keras_contrib/layers/advanced_activations/isrlu.py index 5019f29ce..6efbb120f 100644 --- a/keras_contrib/layers/advanced_activations/isrlu.py +++ b/keras_contrib/layers/advanced_activations/isrlu.py @@ -21,7 +21,7 @@ class ISRLU(Layer): NOTE : This function can become unstable for negative values of α (it may return NaNs). In particular, this happens when - α < 0 and x < -1/sqrt(α) or x > 1/sqrt(α). + α < 0 and x < -1/sqrt(α). If this happens, try limiting the magnitude of α below a certain threshold, such that 1 + α * x^2 is always positive. From 01f25ddc1e397f386ada2108034918a5642a3011 Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Fri, 15 Feb 2019 16:50:22 +0530 Subject: [PATCH 08/23] Set self.trainable = False --- keras_contrib/layers/advanced_activations/isrlu.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/keras_contrib/layers/advanced_activations/isrlu.py b/keras_contrib/layers/advanced_activations/isrlu.py index 6efbb120f..454122d98 100644 --- a/keras_contrib/layers/advanced_activations/isrlu.py +++ b/keras_contrib/layers/advanced_activations/isrlu.py @@ -40,6 +40,7 @@ def __init__(self, super(ISRLU, self).__init__(**kwargs) self.alpha = alpha + self.trainable = False def alpha_initializer(self, input_shape): return self.alpha * K.ones(input_shape) @@ -62,7 +63,7 @@ def compute_output_shape(self, input_shape): return input_shape def get_config(self): - config = {'alpha': self.alpha} + config = {'alpha': self.alpha, + 'trainable': self.trainable} base_config = super(ISRLU, self).get_config() - base_config['trainable'] = False return dict(list(base_config.items()) + list(config.items())) From ff6543808f6e8ad9e18cfa9c18aee7412268eab0 Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Sat, 16 Feb 2019 15:27:22 +0530 Subject: [PATCH 09/23] Make ISRLU compatible with tf.keras --- keras_contrib/layers/advanced_activations/isrlu.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keras_contrib/layers/advanced_activations/isrlu.py b/keras_contrib/layers/advanced_activations/isrlu.py index 454122d98..1e08ad205 100644 --- a/keras_contrib/layers/advanced_activations/isrlu.py +++ b/keras_contrib/layers/advanced_activations/isrlu.py @@ -42,8 +42,8 @@ def __init__(self, self.alpha = alpha self.trainable = False - def alpha_initializer(self, input_shape): - return self.alpha * K.ones(input_shape) + def alpha_initializer(self, input_shape, dtype='float32'): + return self.alpha * K.ones(input_shape, dtype=dtype) def build(self, input_shape): new_input_shape = input_shape[1:] From 19c7a12c45ab1cdbc7a1feb64df34483f3d0a698 Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Sat, 16 Feb 2019 15:29:41 +0530 Subject: [PATCH 10/23] Make ISRLU compatible with tf.keras --- keras_contrib/layers/advanced_activations/isrlu.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/keras_contrib/layers/advanced_activations/isrlu.py b/keras_contrib/layers/advanced_activations/isrlu.py index 1e08ad205..c270d636d 100644 --- a/keras_contrib/layers/advanced_activations/isrlu.py +++ b/keras_contrib/layers/advanced_activations/isrlu.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- from keras import backend as K from keras.layers import Layer +from keras_contrib.utils.test_utils import to_tuple class ISRLU(Layer): @@ -46,6 +47,7 @@ def alpha_initializer(self, input_shape, dtype='float32'): return self.alpha * K.ones(input_shape, dtype=dtype) def build(self, input_shape): + input_shape = to_tuple(input_shape) new_input_shape = input_shape[1:] self.alphas = self.add_weight(shape=new_input_shape, name='{}_alphas'.format(self.name), From 56105183117bcc7d85577e88b7e48a10bce0493f Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Sat, 16 Feb 2019 15:50:13 +0530 Subject: [PATCH 11/23] Make ISRLU tf.keras compatible --- keras_contrib/layers/advanced_activations/isrlu.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/keras_contrib/layers/advanced_activations/isrlu.py b/keras_contrib/layers/advanced_activations/isrlu.py index c270d636d..11737d173 100644 --- a/keras_contrib/layers/advanced_activations/isrlu.py +++ b/keras_contrib/layers/advanced_activations/isrlu.py @@ -43,8 +43,10 @@ def __init__(self, self.alpha = alpha self.trainable = False - def alpha_initializer(self, input_shape, dtype='float32'): - return self.alpha * K.ones(input_shape, dtype=dtype) + def alpha_initializer(self, input_shape, dtype='float32', partition_info=None): + return self.alpha * K.ones(input_shape, + dtype=dtype, + partition_info=partition_info) def build(self, input_shape): input_shape = to_tuple(input_shape) From d696d4595c6eaedf8de5570778713f34a7c43901 Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Sat, 16 Feb 2019 16:03:39 +0530 Subject: [PATCH 12/23] Make ISRLU tf.keras compatible --- .../layers/advanced_activations/isrlu.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/keras_contrib/layers/advanced_activations/isrlu.py b/keras_contrib/layers/advanced_activations/isrlu.py index 11737d173..02c3e3159 100644 --- a/keras_contrib/layers/advanced_activations/isrlu.py +++ b/keras_contrib/layers/advanced_activations/isrlu.py @@ -2,6 +2,7 @@ from keras import backend as K from keras.layers import Layer from keras_contrib.utils.test_utils import to_tuple +from keras_contrib.utils.test_utils import is_tf_keras class ISRLU(Layer): @@ -43,10 +44,16 @@ def __init__(self, self.alpha = alpha self.trainable = False - def alpha_initializer(self, input_shape, dtype='float32', partition_info=None): - return self.alpha * K.ones(input_shape, - dtype=dtype, - partition_info=partition_info) + if is_tf_keras: + def alpha_initializer(self, input_shape, dtype='float32', partition_info=None): + return self.alpha * K.ones(input_shape, + dtype=dtype, + partition_info=partition_info) + + else: + def alpha_initializer(self, input_shape, dtype='float32'): + return self.alpha * K.ones(input_shape, + dtype=dtype) def build(self, input_shape): input_shape = to_tuple(input_shape) From 2fb0da5f512ef4b2cc31aa9cea62503073ac11a5 Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Sat, 16 Feb 2019 16:14:03 +0530 Subject: [PATCH 13/23] Make ISRLU tf.keras compatible --- keras_contrib/layers/advanced_activations/isrlu.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/keras_contrib/layers/advanced_activations/isrlu.py b/keras_contrib/layers/advanced_activations/isrlu.py index 02c3e3159..57af984a1 100644 --- a/keras_contrib/layers/advanced_activations/isrlu.py +++ b/keras_contrib/layers/advanced_activations/isrlu.py @@ -47,8 +47,7 @@ def __init__(self, if is_tf_keras: def alpha_initializer(self, input_shape, dtype='float32', partition_info=None): return self.alpha * K.ones(input_shape, - dtype=dtype, - partition_info=partition_info) + dtype=dtype) else: def alpha_initializer(self, input_shape, dtype='float32'): From d118dcc43b791a6b008d3820bee8b7e816ae0563 Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Sat, 16 Feb 2019 17:02:42 +0530 Subject: [PATCH 14/23] Run global variable init for tf.keras --- keras_contrib/layers/advanced_activations/isrlu.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/keras_contrib/layers/advanced_activations/isrlu.py b/keras_contrib/layers/advanced_activations/isrlu.py index 57af984a1..ed806375e 100644 --- a/keras_contrib/layers/advanced_activations/isrlu.py +++ b/keras_contrib/layers/advanced_activations/isrlu.py @@ -67,6 +67,10 @@ def call(self, x): def inverse_quadratic_square_root(x): return x / K.sqrt(1 + self.alphas * K.square(x)) + if is_tf_keras: + K.set_session(tf.InteractiveSession()) + tf.global_variables_initializer().run() + return K.switch(K.less(x, K.zeros_like(x)), inverse_quadratic_square_root(x), x) def compute_output_shape(self, input_shape): From 8e169049bb01899ff7895e409aeb6556ead362eb Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Sat, 16 Feb 2019 17:03:24 +0530 Subject: [PATCH 15/23] Use self.trainable instead of False --- keras_contrib/layers/advanced_activations/isrlu.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keras_contrib/layers/advanced_activations/isrlu.py b/keras_contrib/layers/advanced_activations/isrlu.py index ed806375e..d0719c529 100644 --- a/keras_contrib/layers/advanced_activations/isrlu.py +++ b/keras_contrib/layers/advanced_activations/isrlu.py @@ -60,7 +60,7 @@ def build(self, input_shape): self.alphas = self.add_weight(shape=new_input_shape, name='{}_alphas'.format(self.name), initializer=self.alpha_initializer, - trainable=False) + trainable=self.trainable) self.build = True def call(self, x): From 133805706af87eb31c1f50054317f42a8fa8fb75 Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Sat, 16 Feb 2019 17:12:30 +0530 Subject: [PATCH 16/23] import tensorflow as tf --- keras_contrib/layers/advanced_activations/isrlu.py | 1 + 1 file changed, 1 insertion(+) diff --git a/keras_contrib/layers/advanced_activations/isrlu.py b/keras_contrib/layers/advanced_activations/isrlu.py index d0719c529..0213f9930 100644 --- a/keras_contrib/layers/advanced_activations/isrlu.py +++ b/keras_contrib/layers/advanced_activations/isrlu.py @@ -68,6 +68,7 @@ def inverse_quadratic_square_root(x): return x / K.sqrt(1 + self.alphas * K.square(x)) if is_tf_keras: + import tensorflow as tf K.set_session(tf.InteractiveSession()) tf.global_variables_initializer().run() From 3789974386f7dc9c1ba535aff7c9662ab4367afa Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Sat, 16 Feb 2019 17:45:15 +0530 Subject: [PATCH 17/23] Revert to no global init --- keras_contrib/layers/advanced_activations/isrlu.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/keras_contrib/layers/advanced_activations/isrlu.py b/keras_contrib/layers/advanced_activations/isrlu.py index 0213f9930..1513deb4a 100644 --- a/keras_contrib/layers/advanced_activations/isrlu.py +++ b/keras_contrib/layers/advanced_activations/isrlu.py @@ -67,11 +67,6 @@ def call(self, x): def inverse_quadratic_square_root(x): return x / K.sqrt(1 + self.alphas * K.square(x)) - if is_tf_keras: - import tensorflow as tf - K.set_session(tf.InteractiveSession()) - tf.global_variables_initializer().run() - return K.switch(K.less(x, K.zeros_like(x)), inverse_quadratic_square_root(x), x) def compute_output_shape(self, input_shape): From e47b575b72967a6cb53ef3b0b8d21cb336222edd Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Mon, 4 Mar 2019 17:38:50 +0530 Subject: [PATCH 18/23] Add **kwargs --- keras_contrib/layers/advanced_activations/isrlu.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/keras_contrib/layers/advanced_activations/isrlu.py b/keras_contrib/layers/advanced_activations/isrlu.py index 1513deb4a..dbc3c5fb7 100644 --- a/keras_contrib/layers/advanced_activations/isrlu.py +++ b/keras_contrib/layers/advanced_activations/isrlu.py @@ -44,13 +44,7 @@ def __init__(self, self.alpha = alpha self.trainable = False - if is_tf_keras: - def alpha_initializer(self, input_shape, dtype='float32', partition_info=None): - return self.alpha * K.ones(input_shape, - dtype=dtype) - - else: - def alpha_initializer(self, input_shape, dtype='float32'): + def alpha_initializer(self, input_shape, dtype='float32', **kwargs): return self.alpha * K.ones(input_shape, dtype=dtype) From 9133f2a6432064361a906417e803267693564202 Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Mon, 4 Mar 2019 17:40:39 +0530 Subject: [PATCH 19/23] Fix indentation --- keras_contrib/layers/advanced_activations/isrlu.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keras_contrib/layers/advanced_activations/isrlu.py b/keras_contrib/layers/advanced_activations/isrlu.py index dbc3c5fb7..96dacd83a 100644 --- a/keras_contrib/layers/advanced_activations/isrlu.py +++ b/keras_contrib/layers/advanced_activations/isrlu.py @@ -45,8 +45,8 @@ def __init__(self, self.trainable = False def alpha_initializer(self, input_shape, dtype='float32', **kwargs): - return self.alpha * K.ones(input_shape, - dtype=dtype) + return self.alpha * K.ones(input_shape, + dtype=dtype) def build(self, input_shape): input_shape = to_tuple(input_shape) From e2a0fc4543c86829e0edd4ce55cec79580285698 Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Mon, 4 Mar 2019 18:13:34 +0530 Subject: [PATCH 20/23] Update isrlu.py --- keras_contrib/layers/advanced_activations/isrlu.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keras_contrib/layers/advanced_activations/isrlu.py b/keras_contrib/layers/advanced_activations/isrlu.py index 96dacd83a..39eb669fd 100644 --- a/keras_contrib/layers/advanced_activations/isrlu.py +++ b/keras_contrib/layers/advanced_activations/isrlu.py @@ -61,7 +61,7 @@ def call(self, x): def inverse_quadratic_square_root(x): return x / K.sqrt(1 + self.alphas * K.square(x)) - return K.switch(K.less(x, K.zeros_like(x)), inverse_quadratic_square_root(x), x) + return K.switch(K.less(x, K.zeros_like(x)), inverse_quadratic_square_root(x), x)a def compute_output_shape(self, input_shape): return input_shape From 1f4d8c65dc738f4afd56675ba6e20cf6d32d4b27 Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Mon, 4 Mar 2019 18:13:43 +0530 Subject: [PATCH 21/23] Update isrlu.py --- keras_contrib/layers/advanced_activations/isrlu.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keras_contrib/layers/advanced_activations/isrlu.py b/keras_contrib/layers/advanced_activations/isrlu.py index 39eb669fd..96dacd83a 100644 --- a/keras_contrib/layers/advanced_activations/isrlu.py +++ b/keras_contrib/layers/advanced_activations/isrlu.py @@ -61,7 +61,7 @@ def call(self, x): def inverse_quadratic_square_root(x): return x / K.sqrt(1 + self.alphas * K.square(x)) - return K.switch(K.less(x, K.zeros_like(x)), inverse_quadratic_square_root(x), x)a + return K.switch(K.less(x, K.zeros_like(x)), inverse_quadratic_square_root(x), x) def compute_output_shape(self, input_shape): return input_shape From cff5b425c2538f80c93f84fb6085c20d1ef8095c Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Mon, 4 Mar 2019 18:29:07 +0530 Subject: [PATCH 22/23] Update isrlu.py --- keras_contrib/layers/advanced_activations/isrlu.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keras_contrib/layers/advanced_activations/isrlu.py b/keras_contrib/layers/advanced_activations/isrlu.py index 96dacd83a..3b4560846 100644 --- a/keras_contrib/layers/advanced_activations/isrlu.py +++ b/keras_contrib/layers/advanced_activations/isrlu.py @@ -63,7 +63,7 @@ def inverse_quadratic_square_root(x): return K.switch(K.less(x, K.zeros_like(x)), inverse_quadratic_square_root(x), x) - def compute_output_shape(self, input_shape): + def compute_output_shape(self, input_shape):h return input_shape def get_config(self): From fb494c2f21c6a47cdde9797835aff6aeb096b2ef Mon Sep 17 00:00:00 2001 From: Tarun S Paparaju Date: Mon, 4 Mar 2019 18:29:25 +0530 Subject: [PATCH 23/23] Update isrlu.py --- keras_contrib/layers/advanced_activations/isrlu.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keras_contrib/layers/advanced_activations/isrlu.py b/keras_contrib/layers/advanced_activations/isrlu.py index 3b4560846..96dacd83a 100644 --- a/keras_contrib/layers/advanced_activations/isrlu.py +++ b/keras_contrib/layers/advanced_activations/isrlu.py @@ -63,7 +63,7 @@ def inverse_quadratic_square_root(x): return K.switch(K.less(x, K.zeros_like(x)), inverse_quadratic_square_root(x), x) - def compute_output_shape(self, input_shape):h + def compute_output_shape(self, input_shape): return input_shape def get_config(self):