Я хочу сгенерировать ROC-кривую для моей обученной модели, но я не знаю, как это сделать с помощью ImageDataGenerator.
Я видел эту ссылку Как я могу построить AUC и ROC, используя fit_generator иvalu_generator для обучения моей сети? , но это только ответило на вопрос, как получить AUC.
Я тоже попробовал это так:
y_pred = model.predict_generator(test_generator, steps= step_size_test)
fpr, tpr, tresholds = roc_curve(y_pred, test_generator.classes)
Это дало мне ошибку
Это часть моего кода
model.compile(loss="binary_crossentropy", optimizer= 'Adam', metrics=['accuracy', auc])
train_datagen = ImageDataGenerator(rescale=1.0 / 255.0)
train_generator = train_datagen.flow_from_directory(
directory=f'./data/train/',
target_size=(Preprocess.image_resolution, Preprocess.image_resolution),
color_mode="grayscale",
batch_size=64,
classes=['a', 'b'],
class_mode="binary",
shuffle=True,
seed=42
)
valid_datagen = ImageDataGenerator(rescale=1.0 / 255.0)
valid_generator = valid_datagen.flow_from_directory(
directory=f'./data/valid/',
target_size=(Preprocess.image_resolution, Preprocess.image_resolution),
color_mode="grayscale",
batch_size=8,
classes=['a', 'b'],
class_mode="binary",
shuffle=True,
seed=42
)
test_datagen = ImageDataGenerator()
test_generator = test_datagen.flow_from_directory(
directory=f'./data/test/',
target_size=(Preprocess.image_resolution, Preprocess.image_resolution),
color_mode="grayscale",
batch_size=1,
classes=['a', 'b'],
class_mode='binary',
shuffle=False,
seed=42
)
step_size_train = train_generator.n // train_generator.batch_size
step_size_valid = valid_generator.n // valid_generator.batch_size
step_size_test = test_generator.n // test_generator.batch_size
model = build_three_layer_cnn_model()
history = model.fit_generator(generator=train_generator,
steps_per_epoch=step_size_train,
validation_data=valid_generator,
validation_steps=step_size_valid,
epochs=10)