-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Open
Labels
bugSomething isn't workingSomething isn't workingmodule:classificationclassification module: time series classificationclassification module: time series classificationmodule:regressionregression module: time series regressionregression module: time series regression
Description
Describe the bug
The underlying keras
model of TapNetClassifier
and TapNetRegressor
cannot be saved using model.save()
because of Lambda
layers in the implementation.
To Reproduce
import numpy as np
from sktime.classification.deep_learning.tapnet import TapNetClassifier
X = np.random.randn(15, 28, 16)
y = np.random.randint(0, high=2, size=(15, ))
tapnet = TapNetClassifier()
tapnet.fit(X, y)
tapnet.save("tapnet")
Error Trace:
...
File "D:\Anaconda\envs\sktime-dev\lib\site-packages\keras\utils\traceback_utils.py", line 67, in error_handler
raise e.with_traceback(filtered_tb) from None
File "D:\Anaconda\envs\sktime-dev\lib\copy.py", line 146, in deepcopy
y = copier(x, memo)
File "D:\Anaconda\envs\sktime-dev\lib\copy.py", line 230, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "D:\Anaconda\envs\sktime-dev\lib\copy.py", line 146, in deepcopy
y = copier(x, memo)
File "D:\Anaconda\envs\sktime-dev\lib\copy.py", line 205, in _deepcopy_list
append(deepcopy(a, memo))
File "D:\Anaconda\envs\sktime-dev\lib\copy.py", line 172, in deepcopy
y = _reconstruct(x, memo, *rv)
File "D:\Anaconda\envs\sktime-dev\lib\copy.py", line 296, in _reconstruct
value = deepcopy(value, memo)
File "D:\Anaconda\envs\sktime-dev\lib\copy.py", line 146, in deepcopy
y = copier(x, memo)
File "D:\Anaconda\envs\sktime-dev\lib\copy.py", line 230, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "D:\Anaconda\envs\sktime-dev\lib\copy.py", line 146, in deepcopy
y = copier(x, memo)
File "D:\Anaconda\envs\sktime-dev\lib\copy.py", line 210, in _deepcopy_tuple
y = [deepcopy(a, memo) for a in x]
File "D:\Anaconda\envs\sktime-dev\lib\copy.py", line 210, in <listcomp>
y = [deepcopy(a, memo) for a in x]
File "D:\Anaconda\envs\sktime-dev\lib\copy.py", line 146, in deepcopy
y = copier(x, memo)
File "D:\Anaconda\envs\sktime-dev\lib\copy.py", line 210, in _deepcopy_tuple
y = [deepcopy(a, memo) for a in x]
File "D:\Anaconda\envs\sktime-dev\lib\copy.py", line 210, in <listcomp>
y = [deepcopy(a, memo) for a in x]
File "D:\Anaconda\envs\sktime-dev\lib\copy.py", line 161, in deepcopy
rv = reductor(4)
TypeError: cannot pickle 'module' object
Additional context
This issue was known during migration and needs to be worked upon. The solution is subclassing tf.keras.layers.Layer
to perform the same operation that Lambda
layers currently do.
Victordmz
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingmodule:classificationclassification module: time series classificationclassification module: time series classificationmodule:regressionregression module: time series regressionregression module: time series regression
Type
Projects
Status
Needs triage & validation