import keras import numpy as np from sklearn.metrics import confusion_matrix model = keras.saving.load_model("classifier.keras", compile=False) model.compile(optimizer="adam", loss="binary_crossentropy", metrics=["accuracy"]) x_test = np.load("x-test.npy") y_test = np.load("y-test.npy").astype("int32").reshape(-1) metrics = model.evaluate(x_test, y_test, verbose=0, return_dict=True) probabilities = model.predict(x_test, verbose=0).reshape(-1) y_pred = (probabilities >= 0.5).astype("int32") matrix = np.zeros((2, 2), dtype="int32") np.add.at(matrix, (y_test, y_pred), 1) tn, fp, fn, tp = matrix.ravel() reference_matrix = confusion_matrix(y_test, y_pred, labels=[0, 1]) matches_reference = np.array_equal(matrix, reference_matrix) print(f"loss: {metrics['loss']:.4f}") print(f"accuracy: {metrics['accuracy']:.4f}") print("confusion matrix rows=true columns=predicted labels=[0, 1]") print(matrix) print(f"tn={tn} fp={fp} fn={fn} tp={tp}") print(f"matches sklearn reference: {matches_reference}") if not matches_reference: raise RuntimeError("custom matrix differs from sklearn reference")