在 Keras 中加载模型

Load models in Keras

我使用此代码使用客户指标 (AUC) 在 Keras 中加载模型,但这不起作用。你能帮我解决那个问题吗?

train_datagen = ImageDataGenerator(rescale=1/255)
val_datagen = ImageDataGenerator(rescale=1/255)

train_generator = train_datagen.flow_from_directory(
                        train_dir,
                        target_size=(32, 32),
                        batch_size=10,
                        class_mode='binary')
val_generator = val_datagen.flow_from_directory(
                        val_dir, 
                        target_size=(32, 32),
                        batch_size=10,
                        class_mode='binary')

model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(MaxPooling2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2, 2)))
model.add(Flatten())
model.add(Dense(512, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy', 
              optimizer='rmsprop', 
              metrics=[keras.metrics.AUC(name='auc')])

history = model.fit_generator(train_generator,
                              steps_per_epoch=1405,
                              epochs=1,
                              validation_data=val_generator,
                              validation_steps=10)

model.save('baseline.h5')

model1 = models.load_model('baseline.h5')

我收到一个值错误

ValueError: Unknown metric function: {'class_name': 'AUC', 'config': {'name': 'auc', 'dtype': 'float32', 'num_thresholds': 200, 'curve': 'ROC', 'summation_method': 'interpolation', 'thresholds': [0.005025125628140704, 0.010050251256281407, 0.01507537688442211, 0.020100502512562814

编辑:我添加了导入。我听说过 load_model 方法中的参数 'customer_objects'。但我试过了:'custom_object'={'auc':keras.metrics.AUC(name='auc')}

from keras.layers import Dense, Conv2D, MaxPooling2D, Flatten
from keras import models
from keras.models import Sequential
from keras.preprocessing.image import ImageDataGenerator
import tensorflow as tf
import os
from sklearn import metrics
from tensorflow import keras

只是不要编译模型:

model1 = models.load_model('baseline.h5', compile=False)
model1.compile(loss='binary_crossentropy', 
              optimizer='rmsprop', 
              metrics=[keras.metrics.AUC()])