From 27d49bbe015435b77b791384407c4dd012491ee8 Mon Sep 17 00:00:00 2001 From: mzwiessele Date: Tue, 16 Aug 2016 11:14:54 +0100 Subject: [PATCH] Revert "Revert "[kern] Add kernel was swallowing parts #fix #412"" This reverts commit 0abb9b835ffeb020410bdf9a1e0532139ffa5cfc. --- GPy/kern/src/add.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/GPy/kern/src/add.py b/GPy/kern/src/add.py index 99fe809b..ca20e5a9 100644 --- a/GPy/kern/src/add.py +++ b/GPy/kern/src/add.py @@ -13,15 +13,21 @@ class Add(CombinationKernel): propagates gradients through. This kernel will take over the active dims of it's subkernels passed in. + + NOTE: The subkernels will be copies of the original kernels, to prevent + unexpected behavior. """ def __init__(self, subkerns, name='sum'): - for i, kern in enumerate(subkerns[:]): + _newkerns = [] + for kern in subkerns: if isinstance(kern, Add): - del subkerns[i] - for part in kern.parts[::-1]: + for part in kern.parts: #kern.unlink_parameter(part) - subkerns.insert(i, part.copy()) - super(Add, self).__init__(subkerns, name) + _newkerns.append(part.copy()) + else: + _newkerns.append(kern.copy()) + + super(Add, self).__init__(_newkerns, name) self._exact_psicomp = self._check_exact_psicomp() def _check_exact_psicomp(self):