forked from athenarc/DPGANs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathImage_Classifier (Uses MNIST dataset).py
41 lines (36 loc) · 1.59 KB
/
Image_Classifier (Uses MNIST dataset).py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import tensorflow as tf
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense, Conv2D, Dropout, Flatten, MaxPooling2D
import numpy
from PIL import Image
import os
import pickle
image_dim = 28
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
# Reshaping the array to 4-dims so that it can work with the Keras API
x_train = x_train.reshape(x_train.shape[0], image_dim, image_dim, 1)
x_test = x_test.reshape(x_test.shape[0], image_dim, image_dim, 1)
input_shape = (image_dim, image_dim, 1)
# Making sure that the values are float so that we can get decimal points after division
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
# Normalizing the RGB codes by dividing it to the max RGB value.
x_train /= 255
x_test /= 255
#print('x_train shape:', x_train.shape)
#print('Number of images in x_train', x_train.shape[0])
#print('Number of images in x_test', x_test.shape[0])
# Importing the required Keras modules containing model and layers
# Creating a Sequential Model and adding the layers
model = Sequential()
model.add(Conv2D(image_dim, kernel_size=(3,3), input_shape=input_shape))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten()) # Flattening the 2D arrays for fully connected layers
model.add(Dense(128, activation=tf.nn.relu))
model.add(Dropout(0.2))
model.add(Dense(10,activation=tf.nn.softmax))
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])
model.fit(x=x_train,y=y_train, epochs=10)
results = model.evaluate(x_test, y_test)
print('test loss, test acc:', results)