cl1p.net - The internet clipboard
cl1p.net Discord
Login/Sign Up
cl1p.net/abcd
cl1p.net/abcd
cl1p.net Discord
Login/Sign Up
This cl1p will be deleted in in 14 hours.
Copy
import tensorflow as tf from tensorflow.keras import layers, models from tensorflow.keras.datasets import cifar10 from tensorflow.keras.utils import to_categorical import numpy as np import matplotlib.pyplot as plt # Load and preprocess the CIFAR-10 dataset (x_train, y_train), (x_test, y_test) = cifar10.load_data() x_train, x_test = x_train / 255.0, x_test / 255.0 y_train, y_test = to_categorical(y_train), to_categorical(y_test) # Convert labels to one-hot encoding def create_model(hidden_units=None, activation=None): model = models.Sequential([ layers.Flatten(input_shape=(32, 32, 3)), layers.Dense(hidden_units[0], activation=activation), # Hidden Layer 1 layers.Dense(hidden_units[1], activation=activation), # Hidden Layer 2 layers.Dense(hidden_units[2], activation=activation), # Hidden Layer 3 layers.Dense(10, activation='softmax') ]) return model hidden_units_list = [(512, 256, 128), (256, 128, 64), (1024, 512, 256)] activation_list = ['relu', 'tanh', 'sigmoid'] results_dict = {} counter = 1 # Loop through combinations of hidden units and activations for hidden_units in hidden_units_list: for activation in activation_list: model = create_model(hidden_units=hidden_units, activation=activation) model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) history = model.fit(x_train, y_train, epochs=5, batch_size=64, validation_data=(x_test, y_test)) _, test_acc = model.evaluate(x_test, y_test) model_info = { # Create a dictionary for the current iteration "Hidden units": hidden_units, "Activation": activation, "Test accuracy": round(test_acc * 100, 4) } results_dict[counter] = model_info # Add the current dictionary to the results dictionary counter += 1 # Display results for each run for key, value in results_dict.items(): print(f"Run {key}:") for info_key, info_value in value.items(): print(f"{info_key}: {info_value}") print("- " * 15) # Dict prints Separator print("\n") # Find and print the run with the highest accuracy max_accuracy_run = max(results_dict, key=lambda k: results_dict[k]["Test accuracy"]) max_accuracy_info = results_dict[max_accuracy_run] print("Run with the highest test accuracy:") print(f"Run {max_accuracy_run}:") for info_key, info_value in max_accuracy_info.items(): print(f"{info_key}: {info_value}") # Make predictions on sample images num_images = 3 sample_images = x_train[:num_images] predictions = model.predict(sample_images) def plot_probability_meter(predictions, image): # Restored the truncated CIFAR-10 class labels class_labels = ["airplane", "automobile", "bird", "cat", "deer", "dog", "frog", "horse", "ship", "truck"] fig, axs = plt.subplots(1, 2, figsize=(10, 2)) # Plot the image axs[0].imshow(image) axs[0].axis('off') # Plot the probability meter axs[1].barh(class_labels, predictions[0], color='blue') axs[1].set_xlim([0, 1]) # axs[1].set_xlabel('Probability') plt.tight_layout() plt.show() for i in range(num_images): plot_probability_meter(predictions[i:i+1], sample_images[i])