ml/as2_Maggioni_Claudio/deliverable/run_task1_bonus.py

64 lines
2.0 KiB
Python

from tensorflow.keras.models import load_model
import os
import pickle
import urllib.request as http
from zipfile import ZipFile
from tensorflow.keras import utils
import tensorflow as tf
import numpy as np
from PIL import Image
from tensorflow.keras import layers as keras_layers
from tensorflow.keras import backend as K
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.models import save_model, load_model
def load_cifar10(num_classes=3):
"""
Downloads CIFAR-10 dataset, which already contains a training and test set,
and return the first `num_classes` classes.
Example of usage:
>>> (x_train, y_train), (x_test, y_test) = load_cifar10()
:param num_classes: int, default is 3 as required by the assignment.
:return: the filtered data.
"""
(x_train_all, y_train_all), (x_test_all, y_test_all) = cifar10.load_data()
fil_train = tf.where(y_train_all[:, 0] < num_classes)[:, 0]
fil_test = tf.where(y_test_all[:, 0] < num_classes)[:, 0]
y_train = y_train_all[fil_train]
y_test = y_test_all[fil_test]
x_train = x_train_all[fil_train]
x_test = x_test_all[fil_test]
return (x_train, y_train), (x_test, y_test)
if __name__ == '__main__':
_, (x_test, y_test) = load_cifar10()
x_test_n = x_test / 255
y_test_n = utils.to_categorical(y_test, 3)
lrs = ["01", "0001"]
nns = [16, 64]
for lr in lrs:
for nn in nns:
# Load the trained models
model_task1 = load_model('nn_task1_bonus/t1_bonus_%s_%d.h5' % (lr, nn))
# Predict on the given samples
y_pred_task1 = model_task1.predict(x_test_n)
# Evaluate the missclassification error on the test set
assert y_test_n.shape == y_pred_task1.shape
test_loss, test_accuracy = model_task1.evaluate(x_test_n, y_test_n) # evaluate accuracy with proper function
print("Accuracy model task 1 (%d neurons, 0.%s learning rate):" % (nn, lr), test_accuracy)