0

I am trying EfficientNet3 and it having this error before training the mode.

from keras.preprocessing.image import load_img
from keras.preprocessing.image import img_to_array
import skimage.io
from efficientnet.tfkeras import center_crop_and_resize, preprocess_input
from tensorflow import keras
SOUND_DIR = 'dataset/audio/Black-cappedChickadee/15233.mp3'
INFERENCE_PATH = 'dataset/audio/Black-cappedChickadee/'

import os
import skimage
import numpy
import librosa
N_FFT = 1024
HOP_SIZE = 1024
N_MELS = 128
WIN_SIZE = 1024
WINDOW_TYPE = 'hann'
FEATURE = 'mel'
FMIN = 0
def scale_minmax(X, min=0.0, max=1.0):
    X_std = (X - X.min()) / (X.max() - X.min())
    X_scaled = X_std * (max - min) + min
    return X_scaled
def spectrogram_image(mels, out):
    # use log-melspectrogram
    #mels = librosa.feature.melspectrogram(y=y, sr=sr, n_mels=n_mels,
    mels = numpy.log(mels + 1e-9) # add small number to avoid log(0)
    # min-max scale to fit inside 8-bit range
    img = scale_minmax(mels, 0, 255).astype(numpy.uint8)
    img = numpy.flip(img, axis=0) # put low frequencies at the bottom in image
    img = 255-img # invert. make black==more energy
    # save as PNG
    skimage.io.imsave(out, img)
signal, sr = librosa.load(SOUND_DIR,duration=10)

S = librosa.feature.melspectrogram(y=signal,sr=sr,
                            n_fft=N_FFT,
                            hop_length=HOP_SIZE,
                            n_mels=N_MELS,
                            htk=True,
                            fmin=FMIN,
                            fmax=sr/2)
spectrogram_image(S,SOUND_DIR.replace('mp3','png'))
IM_SIZE = (224,224,3)
BIRDS = ['Black-cappedChickadee','Black-crownedNightHeron','Black-neckedStilt','BlackRail','Blue-greyGnatcatcher','Blue-headedVireo','BlueJay','BohemianWaxwing','BorealChickadee','BrantGoose','Broad-wingedHawk','BrownCreeper','BrownThrasher']
DATA_PATH = 'TRAINING/'
BATCH_SIZE = 16
from shutil import copy
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(preprocessing_function=spectrogram_image,  
                                   width_shift_range=0.2,
                                   height_shift_range=0.2,
                                   shear_range=0.2,
                                   zoom_range=0.1,
                                   fill_mode='nearest')
train_batches=train_datagen.flow_from_directory(DATA_PATH,classes=BIRDS, target_size=IM_SIZE, class_mode='categorical', 
                                  shuffle=True, batch_size=BATCH_SIZE)
valid_datagen = ImageDataGenerator(rescale= 1.0/255.,  
                                   width_shift_range=0.2,
                                   height_shift_range=0.2,
                                   shear_range=0.2,
                                   zoom_range=0.1,
                                   fill_mode='nearest')
valid_batches = valid_datagen.flow_from_directory('VALIDATION/',
                                                  classes=BIRDS,
                                                  target_size=IM_SIZE,
                                                  class_mode='categorical', shuffle=False,
                                                  batch_size=BATCH_SIZE)

test_datagen = ImageDataGenerator(rescale= 1.0/255.0)
test_batches = test_datagen.flow_from_directory('TESTING/',
                                                  classes=BIRDS,
                                                  target_size=IM_SIZE,
                                                  class_mode='categorical', shuffle=False,
                                                  batch_size=BATCH_SIZE)
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Dropout, Flatten, Dense
from tensorflow.keras import optimizers
import efficientnet.keras as efn
#IM_SIZE = (224,224,3)
net = efn.EfficientNetB3(include_top=False,
                        weights='imagenet',
                        input_tensor=None,
                        input_shape=IM_SIZE)
x = net.output 
x = Flatten()(x) 
x = Dropout(0.5)(x)
output_layer = Dense(len(BIRDS), activation='softmax', name='softmax')(x) 
net_final = Model(inputs=net.input, outputs=output_layer)      
net_final.compile(optimizer=Adam(),loss='categorical_crossentropy', metrics=['accuracy'])
 ---------------------------------------------------------------------------
    ModuleNotFoundError                       Traceback (most recent call last)
    <ipython-input-110-0472f98cc796> in <module>
          8                         weights='imagenet',
          9                         input_tensor=None,
    ---> 10                         input_shape=IM_SIZE)
         11 x = net.output
         12 x = Flatten()(x)
    
    /anaconda3/lib/python3.7/site-packages/efficientnet/__init__.py in

wrapper(*args, **kwargs) 42 kwargs['models'] = keras.models 43 kwargs['utils'] = keras.utils ---> 44 return func(*args, **kwargs) 45 46 return wrapper

    /anaconda3/lib/python3.7/site-packages/efficientnet/model.py in EfficientNetB3(include_top, weights, input_tensor, input_shape,

pooling, classes, **kwargs) 528 input_tensor=input_tensor, input_shape=input_shape, 529 pooling=pooling, classes=classes, --> 530 **kwargs 531 ) 532

    /anaconda3/lib/python3.7/site-packages/efficientnet/model.py in EfficientNet(width_coefficient, depth_coefficient,

default_resolution, dropout_rate, drop_connect_rate, depth_divisor, blocks_args, model_name, include_top, weights, input_tensor, input_shape, pooling, classes, **kwargs) 327 328 if input_tensor is None: --> 329 img_input = layers.Input(shape=input_shape) 330 else: 331 if backend.backend() == 'tensorflow':

    /anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/engine/input_layer.py

in Input(shape, batch_size, name, dtype, sparse, tensor, ragged, **kwargs)

    /anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/utils/version_utils.py

in new(cls, *args, **kwargs)

    /anaconda3/lib/python3.7/site-packages/tensorflow/python/util/lazy_loader.py

in getattr(self, item)

    /anaconda3/lib/python3.7/site-packages/tensorflow/python/util/lazy_loader.py

in _load(self)

    /anaconda3/lib/python3.7/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/lib/python3.7/importlib/_bootstrap.py in _gcd_import(name, package, level)
    
    /anaconda3/lib/python3.7/importlib/_bootstrap.py in _find_and_load(name, import_)
    
    /anaconda3/lib/python3.7/importlib/_bootstrap.py in _find_and_load_unlocked(name, import_)

ModuleNotFoundError: No module named 'tensorflow.python.keras.engine.base_layer_v1'

I have tried all the previous sources + downgrading tensor flow and Keras. But it's still the same. Any inputs would be appreciated.

  • This issue is because of Tensorflow and keras version mis_compatibility.Try to use latest version Tensorflow and Keras. Thanks! –  Aug 17 '21 at 09:41
  • Since the error is caused by keras in particular, Replace it with tensorflow.keras.* and seemed to resolve the issue. Take a look at similar issue https://stackoverflow.com/a/68705329/14290244 –  Oct 22 '21 at 04:27

0 Answers0