Assignment3.
py Mon Sep 24 23:14:37 2018 1
#Camille Chow
#ECE 471 Assignment 3
import numpy as np
import tensorflow as tf
#dimensional constants
num_classes = 10
image_h = 28
image_w = 28
channels = 1
input_shape = (image_h, image_w, channels)
val_set_size = 10000
#tunable hyperparams
batch_size = 50
epochs = 2
kernel_size = 3
pool_size = 2
a_fcn = ’relu’
dropout = .35
lam = .001
#get data
mnist = [Link]
(x_train, y_train),(x_test, y_test) = mnist.load_data()
#shape test data
x_test = x_test.reshape(x_test.shape[0], image_h, image_w, channels)
x_test = x_test.astype(’float32’)
x_test /= 255.0
y_test = [Link].to_categorical(y_test, num_classes)
#shape training data
x_train = x_train.reshape(x_train.shape[0], image_h, image_w, channels)
x_train = x_train.astype(’float32’)
x_train /= 255.0
y_train = [Link].to_categorical(y_train, num_classes)
#split into training/validation sets
x_val = x_train[:val_set_size]
y_val = y_train[:val_set_size]
x_train = x_train[val_set_size:]
y_train = y_train[val_set_size:]
#build cnn
model = [Link]()
[Link]([Link].Conv2D(32, kernel_size=kernel_size, strides=(1, 1), activation=
a_fcn, input_shape=input_shape))
[Link]([Link].MaxPooling2D(pool_size=pool_size, strides=pool_size))
[Link]([Link].Conv2D(64, kernel_size=kernel_size, activation=a_fcn))
[Link]([Link].MaxPooling2D(pool_size=pool_size))
[Link]([Link]())
[Link]([Link](500, activation=a_fcn, kernel_regularizer=[Link]
rizers.l2(lam)))
[Link]([Link](dropout))
[Link]([Link](num_classes, activation=’softmax’))
#train model
[Link](loss=[Link].categorical_crossentropy, optimizer=[Link]
[Link](), metrics=[’accuracy’])
[Link](x_train, y_train, batch_size=batch_size, epochs=epochs, verbose=1, validation_d
ata=(x_test, y_test))
#[Link](x_val, y_val, batch_size=batch_size, epochs=epochs, verbose=1, validation_data
=(x_test, y_test))
#test model
score = [Link](x_test, y_test, verbose=0)
print(’Test loss:’, score[0])
print(’Test accuracy:’, score[1])