keras carga el error del modelo al intentar cargar un archivo de peso que contiene 17 capas en un modelo con 0 capas

Actualmente estoy trabajando en el modelo vgg16 con keras. Afino el modelo vgg con algo de mi capa. Después de ajustar mi modelo (entrenamiento), model.save('name.h5') mi modelo con model.save('name.h5') . Se puede guardar sin problema. Sin embargo, cuando bash volver a cargar el modelo con la función load_model , muestra el error:

Está intentando cargar un archivo de peso que contiene 17 capas en un modelo con 0 capas

¿Alguien resolvió este problema antes? Mi versión de keras es 2.2.

Aquí es parte de mi código …

 from keras.models import load_model vgg_model = VGG16(weights='imagenet',include_top=False,input_shape=(224,224,3)) global model_2 model_2 = Sequential() for layer in vgg_model.layers: model_2.add(layer) for layer in model_2.layers: layer.trainable= False model_2.add(Flatten()) model_2.add(Dense(128, activation='relu')) model_2.add(Dropout(0.5)) model_2.add(Dense(2, activation='softmax')) model_2.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) model_2.fit(x=X_train,y=y_train,batch_size=32,epochs=30,verbose=2) model_2.save('name.h5') del model_2 model_2 = load_model('name.h5') 

En realidad, no load_model el modelo y, a continuación, load_model inmediatamente, solo para mostrar mi problema.

    Parece que este problema está relacionado con el parámetro input_shape de la primera capa. Tuve este problema con una capa de envoltura (Bidireccional) que no tenía un conjunto de parámetros de input_shape. En codigo:

     model.add(Bidirectional(LSTM(units=units, input_shape=(None, feature_size)), merge_mode='concat')) 

    no funcionó para cargar mi modelo anterior porque la input_shape solo se define para la capa LSTM y no para la externa. En lugar

     model.add(Bidirectional(LSTM(units=units), input_shape=(None, feature_size), merge_mode='concat')) 

    funcionó porque la capa Birectional de envoltorio ahora tiene un parámetro input_shape. Tal vez debería verificar si el parámetro VGG net input_shape está establecido o no, o si debería agregar un único input_layer a su modelo con el parámetro correcto input_shape .

    Pasé 6 horas buscando una solución … para aplicar mi modelo entrenado. ¡Finalmente probé VGG16 como modelo y usando pesas h5 he entrenado por mi cuenta y genial!

     weights_model='C:/Anaconda/weightsnew2.h5' # my already trained weights .h5 vgg=applications.vgg16.VGG16() cnn=Sequential() for capa in vgg.layers: cnn.add(capa) cnn.layers.pop() for layer in cnn.layers: layer.trainable=False cnn.add(Dense(2,activation='softmax')) cnn.load_weights(weights_model) def predict(file): x = load_img(file, target_size=(longitud, altura)) x = img_to_array(x) x = np.expand_dims(x, axis=0) array = cnn.predict(x) result = array[0] respuesta = np.argmax(result) if respuesta == 0: print("Gato") elif respuesta == 1: print("Perro")