Skip to content

Commit 4b0435e

Browse files
Merge pull request #100 from antoinedemathelin/master
fix: Tensorflow, sklearn updates
2 parents 9bb173d + 1325e47 commit 4b0435e

21 files changed

+107
-40
lines changed

.github/workflows/run-test.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ jobs:
1818
exclude:
1919
- os: windows-latest
2020
python-version: 3.9
21+
- os: ubuntu-latest
22+
python-version: 3.6
2123
runs-on: ${{ matrix.os }}
2224
steps:
2325
- uses: actions/checkout@v2

adapt/base.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@
1414
from sklearn.exceptions import NotFittedError
1515
from tensorflow.keras import Model
1616
from tensorflow.keras.wrappers.scikit_learn import KerasClassifier, KerasRegressor
17+
try:
18+
from tensorflow.keras.optimizers.legacy import RMSprop
19+
except:
20+
from tensorflow.keras.optimizers import RMSprop
21+
1722

1823
from adapt.utils import (check_estimator,
1924
check_network,
@@ -1308,7 +1313,7 @@ def compile(self,
13081313

13091314
if ((not "optimizer" in compile_params) or
13101315
(compile_params["optimizer"] is None)):
1311-
compile_params["optimizer"] = "rmsprop"
1316+
compile_params["optimizer"] = RMSprop()
13121317
else:
13131318
if optimizer is None:
13141319
if not isinstance(compile_params["optimizer"], str):

adapt/feature_based/_fa.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,9 @@ class FA(BaseAdaptEstimator):
9292
9393
Notes
9494
-----
95-
FA can be used for multi-source DA by giving list of source data
96-
for arguments Xs, ys of fit method : Xs = [Xs1, Xs2, ...],
97-
ys = [ys1, ys2, ...]
95+
FA can be used for multi-source DA by using the ``domains`` argument
96+
in the ``fit`` or ``fit_transform`` method. An example is given
97+
`[here] <https://github.com/adapt-python/adapt/issues/86>`
9898
"""
9999
def __init__(self,
100100
estimator=None,

adapt/parameter_based/_transfer_tree.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -456,7 +456,11 @@ def _force_coherence(self,rule,node=0,Translate=False,indexes_nodes=list(),drift
456456
if not coh:
457457
if Translate :
458458
if auto_drift:
459-
b_infs,b_sups = ut.bounds_rule(rule,self.estimator_.n_features_)
459+
try:
460+
n_feat = self.estimator_.n_features_
461+
except:
462+
n_feat = self.estimator_.n_features_in_
463+
b_infs,b_sups = ut.bounds_rule(rule, n_feat)
460464
if non_coherent_sense == -1:
461465
if b_sups[phi] == np.inf:
462466
self.updateSplit(node,phi,th+D_MARGIN)
@@ -817,8 +821,12 @@ def _strut(self,X_target_node,Y_target_node,node=0,no_prune_on_cl=False,cl_no_pr
817821
maj_class = np.argmax(self.estimator_.tree_.value[node, :].copy())
818822

819823
if min_drift is None or max_drift is None:
820-
min_drift = np.zeros(self.estimator_.n_features_)
821-
max_drift = np.zeros(self.estimator_.n_features_)
824+
try:
825+
n_feat = self.estimator_.n_features_
826+
except:
827+
n_feat = self.estimator_.n_features_in_
828+
min_drift = np.zeros(n_feat)
829+
max_drift = np.zeros(n_feat)
822830

823831
current_class_distribution = ut.compute_class_distribution(classes_, Y_target_node)
824832
is_reached = (Y_target_node.size > 0)

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
numpy
22
scipy
3-
tensorflow >= 2.0
3+
tensorflow < 2.12
44
scikit-learn
55
cvxopt

tests/test_adda.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,11 @@
77
import tensorflow as tf
88
from tensorflow.keras import Sequential, Model
99
from tensorflow.keras.layers import Dense
10-
from tensorflow.keras.optimizers import Adam
1110
from tensorflow.keras.initializers import GlorotUniform
11+
try:
12+
from tensorflow.keras.optimizers.legacy import Adam
13+
except:
14+
from tensorflow.keras.optimizers import Adam
1215

1316
from adapt.feature_based import ADDA
1417

tests/test_base.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@
99
import tensorflow as tf
1010
from tensorflow.keras import Sequential, Model
1111
from tensorflow.keras.layers import Dense
12-
from tensorflow.keras.optimizers import Adam
12+
try:
13+
from tensorflow.keras.optimizers.legacy import Adam
14+
except:
15+
from tensorflow.keras.optimizers import Adam
1316
from sklearn.utils.estimator_checks import check_estimator
1417
from sklearn.base import clone
1518

tests/test_ccsa.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
from adapt.utils import make_classification_da
55
from adapt.feature_based import CCSA
66
from tensorflow.keras.initializers import GlorotUniform
7+
try:
8+
from tensorflow.keras.optimizers.legacy import Adam
9+
except:
10+
from tensorflow.keras.optimizers import Adam
711

812
np.random.seed(0)
913
tf.random.set_seed(0)
@@ -18,13 +22,13 @@
1822

1923
def test_ccsa():
2024
ccsa = CCSA(task=task, loss="categorical_crossentropy",
21-
optimizer="adam", metrics=["acc"], gamma=0.1, random_state=0)
25+
optimizer=Adam(), metrics=["acc"], gamma=0.1, random_state=0)
2226
ccsa.fit(Xs, tf.one_hot(ys, 2).numpy(), Xt=Xt[ind],
2327
yt=tf.one_hot(yt, 2).numpy()[ind], epochs=100, verbose=0)
2428
assert np.mean(ccsa.predict(Xt).argmax(1) == yt) > 0.8
2529

2630
ccsa = CCSA(task=task, loss="categorical_crossentropy",
27-
optimizer="adam", metrics=["acc"], gamma=1., random_state=0)
31+
optimizer=Adam(), metrics=["acc"], gamma=1., random_state=0)
2832
ccsa.fit(Xs, tf.one_hot(ys, 2).numpy(), Xt=Xt[ind],
2933
yt=tf.one_hot(yt, 2).numpy()[ind], epochs=100, verbose=0)
3034

tests/test_cdan.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@
66
import tensorflow as tf
77
from tensorflow.keras import Sequential, Model
88
from tensorflow.keras.layers import Dense
9-
from tensorflow.keras.optimizers import Adam
9+
try:
10+
from tensorflow.keras.optimizers.legacy import Adam
11+
except:
12+
from tensorflow.keras.optimizers import Adam
1013
from tensorflow.keras.initializers import GlorotUniform
1114

1215
from adapt.feature_based import CDAN

tests/test_dann.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@
77
import tensorflow as tf
88
from tensorflow.keras import Sequential, Model
99
from tensorflow.keras.layers import Dense
10-
from tensorflow.keras.optimizers import Adam
10+
try:
11+
from tensorflow.keras.optimizers.legacy import Adam
12+
except:
13+
from tensorflow.keras.optimizers import Adam
1114

1215
from adapt.feature_based import DANN
1316
from adapt.utils import UpdateLambda

0 commit comments

Comments
 (0)