Files
tensordex/5_test_models.py
T
2022-06-07 19:33:40 -04:00

63 lines
1.6 KiB
Python

from glob import glob
import matplotlib.pyplot as plt
import pandas as pd
from PIL import ImageFile
from keras.models import load_model
from keras.preprocessing.image import ImageDataGenerator
from modeling_utils import get_metrics
ImageFile.LOAD_TRUNCATED_IMAGES = True
accuracies = []
losses = []
filenames = []
input_shape = (224, 224, 3)
batch_size = 32
metrics_df = pd.read_csv("all_model_output.csv")
test_gen = ImageDataGenerator().flow_from_directory(
'./data/test',
target_size=(input_shape[0], input_shape[1]),
batch_size=batch_size,
shuffle=False
)
#
single_gen = ImageDataGenerator().flow_from_directory(
'./single_image_test_set',
target_size=(input_shape[0], input_shape[1]),
batch_size=batch_size,
shuffle=False
)
for file in glob("./models/keras/*.hdf5"):
print(file)
if file in metrics_df.values:
continue
model = load_model(file)
test_acc, test_ll = get_metrics(test_gen, model)
single_acc, single_ll = get_metrics(single_gen, model, file[:-5] + ".csv")
metrics_df = metrics_df.append({
"model": file,
"test_acc": test_acc,
"test_loss": test_ll,
"single_acc": single_acc,
"single_loss": single_ll,
}, ignore_index=True)
# Save the results
metrics_df.to_csv("all_model_output.csv", index=False)
print(metrics_df)
metrics_df = metrics_df.sort_values('single_acc')
metrics_df.plot.bar(y=["test_acc", "single_acc"], rot=90)
metrics_df = metrics_df.sort_values('test_acc')
metrics_df.plot.bar(y=["test_acc", "single_acc"], rot=90)
plt.tight_layout()
plt.show()