module 'keras.utils.generic_utils' has no attribute 'get_custom_objects' when importing segmentation_models

Question:

I am working on google colab with the segmentation_models library. It worked perfectly the first week using it, but now it seems that I can’t import the library anymore. Here is the error message, when I execute import segmentation_models as sm :

---------------------------------------------------------------------------

AttributeError                            Traceback (most recent call last)

<ipython-input-3-6f48ce46383f> in <module>
      1 import tensorflow as tf
----> 2 import segmentation_models as sm

            3 frames

/usr/local/lib/python3.8/dist-packages/efficientnet/__init__.py in init_keras_custom_objects()
     69     }
     70 
---> 71     keras.utils.generic_utils.get_custom_objects().update(custom_objects)
     72 
     73 

AttributeError: module 'keras.utils.generic_utils' has no attribute 'get_custom_objects'

Colab uses tensorflow version 2.11.0.

I did not find any information about this particular error message. Does anyone know where the problem may come from ?

Asked By: Droidux

||

Answers:

Encountered the same issue sometimes. How I solved it:

  1. open the file keras.py, change all the ‘init_keras_custom_objects’ to ‘init_tfkeras_custom_objects’.

  2. the location of the keras.py is in the error message. In your case, it should be in /usr/local/lib/python3.8/dist-packages/efficientnet/

Answered By: vuict

Try this. It works. I checked it on google colab

!pip install -U -q segmentation-models
!pip install -q tensorflow==2.2.1
!pip install -q keras==2.5
import os
os.environ["SM_FRAMEWORK"] = "tf.keras"

from tensorflow import keras
import segmentation_models as sm
Answered By: shuvro das