Я не могу загрузить свою nn-модель, которую я обучил и сохранил - PullRequest
0 голосов
/ 02 августа 2020

Я использовал трансферное обучение для обучения модели. Фундаментальная модель была efficientNet. Подробнее об этом можно прочитать здесь

from tensorflow import keras
from keras.models import Sequential,Model
from keras.layers import Dense,Dropout,Conv2D,MaxPooling2D, 
Flatten,BatchNormalization, Activation
from keras.optimizers import RMSprop , Adam ,SGD
from keras.backend import sigmoid

Функция активации

class SwishActivation (Activation):

def __init__(self, activation, **kwargs):
    super(SwishActivation, self).__init__(activation, **kwargs)
    self.__name__ = 'swish_act'

def swish_act(x, beta = 1):
    return (x * sigmoid(beta * x))

from keras.utils.generic_utils import get_custom_objects
from keras.layers import Activation
get_custom_objects().update({'swish_act': SwishActivation(swish_act)})

Определение модели

model = enet.EfficientNetB0(include_top=False, input_shape=(150,50,3), pooling='avg', weights='imagenet')

Добавление 2 полностью связанных слоев в B0.

x = model.output

x = BatchNormalization()(x)
x = Dropout(0.7)(x)

x = Dense(512)(x)
x = BatchNormalization()(x)
x = Activation(swish_act)(x)
x = Dropout(0.5)(x)

x = Dense(128)(x)
x = BatchNormalization()(x)
x = Activation(swish_act)(x)

x = Dense(64)(x)

x = Dense(32)(x)

x = Dense(16)(x)

# Output layer
predictions = Dense(1, activation="sigmoid")(x)

model_final = Model(inputs = model.input, outputs = predictions)

model_final.summary()

Я сохранил его, используя:

    model.save('model.h5')

При попытке загрузить появляется следующая ошибка:

    model=tf.keras.models.load_model('model.h5')
    
    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    <ipython-input-12-e3bef1680e4f> in <module>()
          1 # Recreate the exact same model, including its weights and the optimizer
    ----> 2 model = tf.keras.models.load_model('PhoneDetection-CNN_29_July.h5')
          3 
          4 # Show the model architecture
          5 model.summary()
    
    10 frames
    /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/utils/generic_utils.py in class_and_config_for_serialized_keras_object(config, module_objects, custom_objects, printable_module_name)
        319   cls = get_registered_object(class_name, custom_objects, module_objects)
        320   if cls is None:
    --> 321     raise ValueError('Unknown ' + printable_module_name + ': ' + class_name)
        322 
        323   cls_config = config['config']
    
    ValueError: Unknown layer: FixedDropout
```python

...