ML Project
ML Project
Topic:
Handwritten Digit Classification Using
Multiclass Neural Network
Thrisha S PES1UG20EC213
Adarsh Hegde PES1UG20EC246
Akarsh Hegde PES1UG20EC248
Code:
import numpy as np
import tensorflow as tf
from scipy.io import loadmat
import matplotlib.pyplot as plt
from matplotlib import pyplot
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.activations import linear, relu, sigmoid
def my_softmax(z):
""" Softmax converts a vector of values to a probability distribution.
Args:
ez = np.exp(z)
a = ez/np.sum(ez)
#element-wise exponenial
np.set_printoptions(precision=2)
z = np.array([1., 2., 3., 4.])
a = my_softmax(z)
atf = tf.nn.softmax(z)
print(f"my_softmax(z): {a}")
print(f"tensorflow softmax(z): {atf}")
data = loadmat('ex3data1.mat')
X, y = data['X'], data['y'].ravel()
y[y == 10] = 0
0.00e+00]
[
### START CODE HERE ###
tf.keras.Input(shape=(400,)),
model.summary()
Model: "my_model"
_________________________________________________________________
L1 (Dense)
L2 (Dense)
L3 (Dense)
=================================================================
Total params: 10,575
Trainable params: 10,575
Non-trainable params: 0
_________________________________________________________________
W1,b1 = layer1.get_weights()
W2,b2 = layer2.get_weights()
W3,b3 = layer3.get_weights()
print(f"W1 shape = {W1.shape}, b1 shape = {b1.shape}")
print(f"W2 shape = {W2.shape}, b2 shape = {b2.shape}")
print(f"W3 shape = {W3.shape}, b3 shape = {b3.shape}")
model.compile(
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),
history = model.fit(X,y,epochs=50)
157/157 [==============================] - 1s 5ms/step - loss: 0.1606
Epoch 15/50
157/157 [==============================] - 1s 4ms/step - loss: 0.1482
Epoch 16/50
n = X.size
m=1
X = X[None] # Promote to a 2 dimensional array
else:
raise IndexError('Input X should be 1 or 2 dimensional.')
for i, ax in enumerate(ax_array):
ax.imshow(X[i].reshape(example_width, example_width, order='F'),
image_of_two = X[99]
displayData(image_of_two)
[[ 15.85 -15.92 -3.93 -0.39 -18.84 -8.25 2.24 2.72 -2.19 6.21]]
Largest Prediction index: 0
m, n = X.shape
def
display_errors(model,X,y): f = model.predict(X)
yhat = np.argmax(f, axis=1) doo = yhat != y[:]
idxs = np.where(yhat != y[:])[0]
if len(idxs) == 0:
for i in range(cnt):
j = idxs[i]
X_reshaped = X[j].reshape((20,20)).T
return(len(idxs))
error = display_errors(model,X,y)
print( f"{error} ererrorosro=utdiosfpl{alye_ne(rXr)o}rsi(mmaogdeesl",)X,y) print( f"Accuracy:
{((len(X)-error)*100)/len(X)}%")