ageron / handson-ml2

A series of Jupyter notebooks that walk you through the fundamentals of Machine Learning and Deep Learning in Python using Scikit-Learn, Keras and TensorFlow 2.
Apache License 2.0
27.99k stars 12.8k forks source link

[QUESTION]: Unable to use Keras - AlreadyExistsError: Another metric with the same name already exists. #501

Open divya-chou opened 3 years ago

divya-chou commented 3 years ago

Hi Mr Geron, I love your book, and have been trying to run the code examples side by side. I am facing issue in running it on my own Windows system. In chapter 10 noteboook, int eh section on building an Image Classifier, I am able to import keras, but am unable to use it.

Running line 11 with tf.keras.version throws the following error: I have followed the steps mentioned in environment set up. I am working with Windows 10, Python 3.8.12

In fact in the libraries installed, I do see 2 instances of keras at the following location: site-packages/keras site-packages/tensorflow/python/keras

I tried following the instructions at https://stackoverflow.com/questions/58012741/error-importing-tensorflow-alreadyexistserror-another-metric-with-the-same-nam/69830680#69830680 to no avail. Please let me know how to fix this.


AlreadyExistsError Traceback (most recent call last) C:\Users\CHOUDH~1\AppData\Local\Temp/ipykernel_16512/4011237486.py in ----> 1 tf.keras.version

~\Anaconda3\envs\tf2\lib\site-packages\tensorflow\python\util\lazy_loader.py in getattr(self, item) 60 61 def getattr(self, item): ---> 62 module = self._load() 63 return getattr(module, item) 64

~\Anaconda3\envs\tf2\lib\site-packages\tensorflow\python\util\lazy_loader.py in _load(self) 43 """Load the module and insert it into the parent's globals.""" 44 # Import the target module and insert it into the parent's namespace ---> 45 module = importlib.import_module(self.name) 46 self._parent_module_globals[self._local_name] = module 47

~\Anaconda3\envs\tf2\lib\importlib__init__.py in import_module(name, package) 125 break 126 level += 1 --> 127 return _bootstrap._gcd_import(name[level:], package, level) 128 129

~\Anaconda3\envs\tf2\lib\importlib_bootstrap.py in _gcd_import(name, package, level)

~\Anaconda3\envs\tf2\lib\importlib_bootstrap.py in _find_andload(name, import)

~\Anaconda3\envs\tf2\lib\importlib_bootstrap.py in _find_and_loadunlocked(name, import)

~\Anaconda3\envs\tf2\lib\importlib_bootstrap.py in _call_with_frames_removed(f, *args, **kwds)

~\Anaconda3\envs\tf2\lib\importlib_bootstrap.py in _gcd_import(name, package, level)

~\Anaconda3\envs\tf2\lib\importlib_bootstrap.py in _find_andload(name, import)

~\Anaconda3\envs\tf2\lib\importlib_bootstrap.py in _find_and_loadunlocked(name, import)

~\Anaconda3\envs\tf2\lib\importlib_bootstrap.py in _call_with_frames_removed(f, *args, **kwds)

~\Anaconda3\envs\tf2\lib\importlib_bootstrap.py in _gcd_import(name, package, level)

~\Anaconda3\envs\tf2\lib\importlib_bootstrap.py in _find_andload(name, import)

~\Anaconda3\envs\tf2\lib\importlib_bootstrap.py in _find_and_loadunlocked(name, import)

~\Anaconda3\envs\tf2\lib\importlib_bootstrap.py in _call_with_frames_removed(f, *args, **kwds)

~\Anaconda3\envs\tf2\lib\importlib_bootstrap.py in _gcd_import(name, package, level)

~\Anaconda3\envs\tf2\lib\importlib_bootstrap.py in _find_andload(name, import)

~\Anaconda3\envs\tf2\lib\importlib_bootstrap.py in _find_and_loadunlocked(name, import)

~\Anaconda3\envs\tf2\lib\importlib_bootstrap.py in _load_unlocked(spec)

~\Anaconda3\envs\tf2\lib\importlib_bootstrap_external.py in exec_module(self, module)

~\Anaconda3\envs\tf2\lib\importlib_bootstrap.py in _call_with_frames_removed(f, *args, **kwds)

~\Anaconda3\envs\tf2\lib\site-packages\keras__init__.py in 23 24 # See b/110718070#comment18 for more details about this import. ---> 25 from keras import models 26 27 from keras.engine.input_layer import Input

~\Anaconda3\envs\tf2\lib\site-packages\keras\models.py in 18 import tensorflow.compat.v2 as tf 19 from keras import backend ---> 20 from keras import metrics as metrics_module 21 from keras import optimizer_v1 22 from keras.engine import functional

~\Anaconda3\envs\tf2\lib\site-packages\keras\metrics.py in 24 25 import numpy as np ---> 26 from keras import activations 27 from keras import backend 28 from keras.engine import base_layer

~\Anaconda3\envs\tf2\lib\site-packages\keras\activations.py in 18 19 from keras import backend ---> 20 from keras.layers import advanced_activations 21 from keras.utils.generic_utils import deserialize_keras_object 22 from keras.utils.generic_utils import serialize_keras_object

~\Anaconda3\envs\tf2\lib\site-packages\keras\layers__init__.py in 21 22 # Generic layers. ---> 23 from keras.engine.input_layer import Input 24 from keras.engine.input_layer import InputLayer 25 from keras.engine.input_spec import InputSpec

~\Anaconda3\envs\tf2\lib\site-packages\keras\engine\input_layer.py in 19 from keras import backend 20 from keras.distribute import distributed_training_utils ---> 21 from keras.engine import base_layer 22 from keras.engine import keras_tensor 23 from keras.engine import node as node_module

~\Anaconda3\envs\tf2\lib\site-packages\keras\engine\base_layer.py in 41 from keras.engine import node as node_module 42 from keras.mixed_precision import autocast_variable ---> 43 from keras.mixed_precision import loss_scale_optimizer 44 from keras.mixed_precision import policy 45 from keras.saving.saved_model import layer_serialization

~\Anaconda3\envs\tf2\lib\site-packages\keras\mixed_precision\loss_scale_optimizer.py in 16 17 from keras import backend ---> 18 from keras import optimizers 19 from keras.mixed_precision import loss_scale as keras_loss_scale_module 20 from keras.optimizer_v2 import optimizer_v2

~\Anaconda3\envs\tf2\lib\site-packages\keras\optimizers.py in 24 from keras.optimizer_v1 import Optimizer 25 from keras.optimizer_v1 import TFOptimizer ---> 26 from keras.optimizer_v2 import adadelta as adadelta_v2 27 from keras.optimizer_v2 import adagrad as adagrad_v2 28 from keras.optimizer_v2 import adam as adam_v2

~\Anaconda3\envs\tf2\lib\site-packages\keras\optimizer_v2\adadelta.py in 20 import numpy as np 21 from keras import backend_config ---> 22 from keras.optimizer_v2 import optimizer_v2 23 from tensorflow.python.util.tf_export import keras_export 24

~\Anaconda3\envs\tf2\lib\site-packages\keras\optimizer_v2\optimizer_v2.py in 34 35 ---> 36 keras_optimizers_gauge = tf.internal.monitoring.BoolGauge( 37 "/tensorflow/api/keras/optimizers", "keras optimizer usage", "method") 38

~\Anaconda3\envs\tf2\lib\site-packages\tensorflow\python\eager\monitoring.py in init(self, name, description, labels) 358 labels: The label list of the new metric. 359 """ --> 360 super(BoolGauge, self).init('BoolGauge', _bool_gauge_methods, 361 len(labels), name, description, *labels) 362

~\Anaconda3\envs\tf2\lib\site-packages\tensorflow\python\eager\monitoring.py in init(self, metric_name, metric_methods, label_length, args) 133 self._metric_name, len(self._metric_methods))) 134 --> 135 self._metric = self._metric_methods[self._label_length].create(args) 136 137 def del(self):

AlreadyExistsError: Another metric with the same name already exists.

divya-chou commented 3 years ago

I had to resolve this by entering the conda terminal, and doing pip uninstall keras pip install keras==2.6.0