Я использую новую версию тензорного потока, и у нее есть au c metri c, определенный как tf.keras.metrics.AU C (). Модель компилируется и работает нормально, но когда я загружаю модель, она не может распознать функцию au c metri c. Я добавил необходимую функцию импорта. Коды приведены ниже:
import keras
import tensorflow as tf
from tensorflow.keras import backend as K
from keras.optimizers import SGD, Adam
from keras.models import Model, load_model
from kerao.callbacks import Plotter
from keras.callbacks import Callback, ModelCheckpoint
optimizer = SGD(lr=1e-3, decay=1e-4, momentum=0.9, nesterov=True)
model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=[tf.keras.metrics.AUC()])
out_path = "../model_test.h5"
checkpoint = ModelCheckpoint(out_path, monitor='val_loss', save_best_only=True, period=1, verbose=1)
model.fit_generator(generatortrain, steps_per_epoch= 100, epochs= 30, validation_data= generatortest, validation_steps=len(generatortest), initial_epoch=0, callbacks=[Plotter(), checkpoint], workers=7, max_queue_size=20, class_weight= class_weight)
model_new= load_model('../model_test.h5', custom_objects= {'AUC': tf.keras.metrics.AUC()})
> ValueError: Unknown metric function:auc
I have also tried following way:
def auc(y_true, y_pred):
return tf.keras.metrics.AUC()
optimizer = SGD(lr=1e-3, decay=1e-4, momentum=0.9, nesterov=True)
model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=[auc, f1])
This gives me following error:
Failed to convert object of type <class 'tensorflow.python.keras.metrics.AUC'> to Tensor. Contents: <tensorflow.python.keras.metrics.AUC object at 0x7fd6f0ea7350>. Consider casting elements to a supported type.