diff --git a/GPy/kern/src/add.py b/GPy/kern/src/add.py index ca20e5a9..99fe809b 100644 --- a/GPy/kern/src/add.py +++ b/GPy/kern/src/add.py @@ -13,21 +13,15 @@ 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'): - _newkerns = [] - for kern in subkerns: + for i, kern in enumerate(subkerns[:]): if isinstance(kern, Add): - for part in kern.parts: + del subkerns[i] + for part in kern.parts[::-1]: #kern.unlink_parameter(part) - _newkerns.append(part.copy()) - else: - _newkerns.append(kern.copy()) - - super(Add, self).__init__(_newkerns, name) + subkerns.insert(i, part.copy()) + super(Add, self).__init__(subkerns, name) self._exact_psicomp = self._check_exact_psicomp() def _check_exact_psicomp(self):