From e64efb850e7b9ba176c7d2d7cd33c2ec7cde7383 Mon Sep 17 00:00:00 2001 From: hankcs Date: Wed, 21 Aug 2024 18:09:40 -0700 Subject: [PATCH] Support new versions of tensorflow and numpy --- hanlp/components/parsers/biaffine_parser_tf.py | 11 ++++++----- hanlp/optimizers/adamw/optimization.py | 8 +++++++- hanlp/transform/conll_tf.py | 2 +- hanlp/version.py | 2 +- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/hanlp/components/parsers/biaffine_parser_tf.py b/hanlp/components/parsers/biaffine_parser_tf.py index 6709b22cc..33cf89a38 100644 --- a/hanlp/components/parsers/biaffine_parser_tf.py +++ b/hanlp/components/parsers/biaffine_parser_tf.py @@ -200,11 +200,12 @@ def build_optimizer(self, optimizer='adam', lr=2e-3, mu=.9, nu=.9, epsilon=1e-12 scheduler = tf.keras.optimizers.schedules.ExponentialDecay(initial_learning_rate=lr, decay_steps=decay_steps, decay_rate=decay) - optimizer = tf.keras.optimizers.Adam(learning_rate=scheduler, - beta_1=mu, - beta_2=nu, - epsilon=epsilon, - clipnorm=clip) + from hanlp.optimizers.adamw.optimization import AdamTF + optimizer = AdamTF(learning_rate=scheduler, + beta_1=mu, + beta_2=nu, + epsilon=epsilon, + clipnorm=clip) return optimizer return super().build_optimizer(optimizer, **kwargs) diff --git a/hanlp/optimizers/adamw/optimization.py b/hanlp/optimizers/adamw/optimization.py index 7a94f8d77..0675c538a 100644 --- a/hanlp/optimizers/adamw/optimization.py +++ b/hanlp/optimizers/adamw/optimization.py @@ -95,7 +95,13 @@ def create_optimizer(init_lr, num_train_steps, num_warmup_steps): return optimizer -class AdamWeightDecay(tf.keras.optimizers.Adam): +try: + AdamTF = tf.keras.optimizers.legacy.Adam # avoid slowdown when using v2.11+ Keras optimizers on M1/M2 Macs +except: + AdamTF = tf.keras.optimizers.Adam + + +class AdamWeightDecay(AdamTF): """Adam enables L2 weight decay and clip_by_global_norm on gradients. Just adding the square of the weights to the loss function is *not* the diff --git a/hanlp/transform/conll_tf.py b/hanlp/transform/conll_tf.py index b031c3b97..1bb115048 100644 --- a/hanlp/transform/conll_tf.py +++ b/hanlp/transform/conll_tf.py @@ -736,7 +736,7 @@ def batched_inputs_to_batches(self, corpus, indices, shuffle): raw_batch = [[], [], [], []] if use_pos else [[], [], []] max_len = len(max([corpus[i] for i in indices], key=len)) for idx in indices: - arc = np.zeros((max_len, max_len), dtype=np.bool) + arc = np.zeros((max_len, max_len), dtype=bool) rel = np.zeros((max_len, max_len), dtype=np.int64) for b in raw_batch[:2]: b.append([]) diff --git a/hanlp/version.py b/hanlp/version.py index 1d3a0ae9a..96cf05ff3 100644 --- a/hanlp/version.py +++ b/hanlp/version.py @@ -2,7 +2,7 @@ # Author: hankcs # Date: 2019-12-28 19:26 -__version__ = '2.1.0-beta.59' +__version__ = '2.1.0-beta.60' """HanLP version"""