From 11c612adb79c2462d54cdd583770eb04733fb118 Mon Sep 17 00:00:00 2001 From: Hao Date: Sun, 4 Mar 2018 17:31:03 +0000 Subject: [PATCH 1/4] update ElementwiseLayer for #376 --- tensorlayer/layers/merge.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tensorlayer/layers/merge.py b/tensorlayer/layers/merge.py index 1f4775c83..bda0c01fd 100644 --- a/tensorlayer/layers/merge.py +++ b/tensorlayer/layers/merge.py @@ -111,8 +111,8 @@ def __init__( self.outputs = layers[0].outputs # logging.info(self.outputs._shape, type(self.outputs._shape)) for l in layers[1:]: - if str(self.outputs.get_shape()) != str(l.outputs.get_shape()): - raise Exception("Hint: the input shapes should be the same. %s != %s" % (self.outputs.get_shape(), str(l.outputs.get_shape()))) + # if str(self.outputs.get_shape()) != str(l.outputs.get_shape()): # issue 376 + # raise Exception("Hint: the input shapes should be the same. %s != %s" % (self.outputs.get_shape(), str(l.outputs.get_shape()))) self.outputs = combine_fn(self.outputs, l.outputs, name=name) self.all_layers = list(layers[0].all_layers) From 8ffc122c5352dbb5258abcea4bd4d94123848f58 Mon Sep 17 00:00:00 2001 From: Hao Date: Sun, 4 Mar 2018 20:29:01 +0000 Subject: [PATCH 2/4] elementwise supports activation --- tensorlayer/layers/merge.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tensorlayer/layers/merge.py b/tensorlayer/layers/merge.py index bda0c01fd..97b0715ee 100644 --- a/tensorlayer/layers/merge.py +++ b/tensorlayer/layers/merge.py @@ -81,6 +81,8 @@ class ElementwiseLayer(Layer): combine_fn : a TensorFlow element-wise combine function e.g. AND is ``tf.minimum`` ; OR is ``tf.maximum`` ; ADD is ``tf.add`` ; MUL is ``tf.multiply`` and so on. See `TensorFlow Math API `__ . + act : activation function + The activation function of this layer. name : str A unique layer name. @@ -102,6 +104,7 @@ def __init__( self, layers, combine_fn=tf.minimum, + act=None, name='elementwise_layer', ): Layer.__init__(self, name=name) @@ -115,6 +118,9 @@ def __init__( # raise Exception("Hint: the input shapes should be the same. %s != %s" % (self.outputs.get_shape(), str(l.outputs.get_shape()))) self.outputs = combine_fn(self.outputs, l.outputs, name=name) + if act: + self.outputs = act(self.outputs) + self.all_layers = list(layers[0].all_layers) self.all_params = list(layers[0].all_params) self.all_drop = dict(layers[0].all_drop) From a331755737987117cbeac29aac66fb7074984839 Mon Sep 17 00:00:00 2001 From: Hao Date: Sun, 4 Mar 2018 20:34:24 +0000 Subject: [PATCH 3/4] Update merge.py --- tensorlayer/layers/merge.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tensorlayer/layers/merge.py b/tensorlayer/layers/merge.py index 97b0715ee..fdd7904b6 100644 --- a/tensorlayer/layers/merge.py +++ b/tensorlayer/layers/merge.py @@ -120,7 +120,7 @@ def __init__( if act: self.outputs = act(self.outputs) - + self.all_layers = list(layers[0].all_layers) self.all_params = list(layers[0].all_params) self.all_drop = dict(layers[0].all_drop) From 3a291b708d3f8256fba7874b771eb91329befdda Mon Sep 17 00:00:00 2001 From: Hao Date: Mon, 5 Mar 2018 12:02:17 +0000 Subject: [PATCH 4/4] Update merge.py --- tensorlayer/layers/merge.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tensorlayer/layers/merge.py b/tensorlayer/layers/merge.py index fdd7904b6..e4c6bde26 100644 --- a/tensorlayer/layers/merge.py +++ b/tensorlayer/layers/merge.py @@ -112,10 +112,8 @@ def __init__( logging.info("ElementwiseLayer %s: size:%s fn:%s" % (self.name, layers[0].outputs.get_shape(), combine_fn.__name__)) self.outputs = layers[0].outputs - # logging.info(self.outputs._shape, type(self.outputs._shape)) + for l in layers[1:]: - # if str(self.outputs.get_shape()) != str(l.outputs.get_shape()): # issue 376 - # raise Exception("Hint: the input shapes should be the same. %s != %s" % (self.outputs.get_shape(), str(l.outputs.get_shape()))) self.outputs = combine_fn(self.outputs, l.outputs, name=name) if act: