from __future__ import print_function #import tensorflow as tf #import tensorflow.keras from tensorflow.keras.datasets import mnist from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Dropout from tensorflow.keras.optimizers import RMSprop import numpy as np #print('tensorflow:', tf.__version__) #print('keras:', tensorflow.keras.__version__) #load (first download if necessary) the MNIST dataset # (the dataset is stored in your home direcoty in ~/.keras/datasets/mnist.npz # and will take ~11MB) # data is already split in train and test datasets (x_train, y_train), (x_test, y_test) = mnist.load_data() # x_train : 60000 images of size 28x28, i.e., x_train.shape = (60000, 28, 28) # y_train : 60000 labels (from 0 to 9) # x_test : 10000 images of size 28x28, i.e., x_test.shape = (10000, 28, 28) # x_test : 10000 labels # all datasets are of type uint8 #To input our values in our network Dense layer, we need to flatten the datasets, i.e., # pass from (60000, 28, 28) to (60000, 784) #flatten images num_pixels = x_train.shape[1] * x_train.shape[2] x_train = x_train.reshape(x_train.shape[0], num_pixels) x_test = x_test.reshape(x_test.shape[0], num_pixels) #Convert to float x_train = x_train.astype('float32') x_test = x_test.astype('float32') #Normalize inputs from [0; 255] to [0; 1] x_train = x_train / 255 x_test = x_test / 255 #We want to have a binary classification: digit 0 is classified 1 and #all the other digits are classified 0 y_new = np.zeros(y_train.shape) y_new[np.where(y_train==0.0)[0]] = 1 y_train = y_new y_new = np.zeros(y_test.shape) y_new[np.where(y_test==0.0)[0]] = 1 y_test = y_new num_classes = 1 #Let start our work: creating a neural network #First, we just use a single neuron. ##### TO COMPLETE