Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # from keras.datasets import cifar10 # subroutines for fetching the CIFAR-10 dataset
- import numpy as np
- from PreparedData import *
- def Test(sample_indexes):
- sample_images = np.array([X_train[i] for i in sample_indexes])
- sample_labels = [y_train[i] for i in sample_indexes]
- out1 = model.predict(sample_images)
- print()
- print(sample_labels)
- print([np.argmax(i) for i in out1])
- print(out1)
- batch_size = 52 # in each iteration, we consider 32 training examples at once
- num_epochs = 24 # we iterate 200 times over the entire training set
- kernel_size = 3 # we will use 3x3 kernels throughout
- pool_size = 2 # we will use 2x2 pooling throughout
- conv_depth_1 = 32 # we will initially have 32 kernels per conv. layer...
- conv_depth_2 = 64 # ...switching to 64 after the first pooling layer
- drop_prob_1 = 0.25 # dropout after pooling with probability 0.25
- drop_prob_2 = 0.51 # dropout in the FC layer with probability 0.5
- hidden_size = 512 # the FC layer will have 512 neurons
- dataTrain = filePrepared(r'C:\Users\tutor\PycharmProjects\exelePreparations\scrapTRAIn')
- dataTrain.generateLabelsName()
- dataTrain.simpleLoadData()
- # data.createTestData()
- dataTrain.convertToArray()
- dataTest = filePrepared(r'C:\Users\tutor\PycharmProjects\exelePreparations\scrapTEST')
- dataTest.generateLabelsName()
- dataTest.simpleLoadData()
- dataTest.convertToArray()
- print(dataTest.getShape()[0])
- # print(data.getSize())
- (X_train, y_train), (X_test, y_test) = (dataTrain.images,dataTrain.labels),(dataTest.images,dataTest.labels) # fetch CIFAR-10 data
- num_train, height, width,depth = dataTrain.getShape() # there are 50000 training examples in CIFAR-10
- num_test = dataTest.getShape()[0] # there are 10000 test examples in CIFAR-10
- num_classes = dataTrain.sizeLabels() # there are 10 image classes
- print(num_classes)
- X_train = X_train.astype('float32')
- X_test = X_test.astype('float32')
- X_train /= np.max(X_train) # Normalise data to [0, 1] range
- X_test /= np.max(X_test) # Normalise data to [0, 1] range
- from keras.models import Model # basic class for specifying and training a neural network
- from keras.layers import Input, Convolution2D, MaxPooling2D, Dense, Dropout, Flatten
- from keras.utils import np_utils # utilities for one-hot encoding of ground truth values
- Y_train = np_utils.to_categorical(y_train, num_classes) # One-hot encode the labels
- Y_test = np_utils.to_categorical(y_test, num_classes) # One-hot encode the labels
- inp = Input(shape=(height, width,depth)) # N.B. depth goes first in Keras!
- # Conv [32] -> Conv [32] -> Pool (with dropout on the pooling layer)
- conv_1 = Convolution2D(conv_depth_1, kernel_size, kernel_size, border_mode='same', activation='relu')(inp)
- conv_2 = Convolution2D(conv_depth_1, kernel_size, kernel_size, border_mode='same', activation='relu')(conv_1)
- pool_1 = MaxPooling2D(pool_size=(pool_size, pool_size))(conv_2)
- drop_1 = Dropout(drop_prob_1)(pool_1)
- # Conv [64] -> Conv [64] -> Pool (with dropout on the pooling layer)
- conv_3 = Convolution2D(conv_depth_2, kernel_size, kernel_size, border_mode='same', activation='relu')(drop_1)
- # conv_4 = Convolution2D(conv_depth_2, kernel_size, kernel_size, border_mode='same', activation='relu')(conv_3)
- pool_2 = MaxPooling2D(pool_size=(pool_size, pool_size))(conv_3)
- drop_2 = Dropout(drop_prob_1)(pool_2)
- # Now flatten to 1D, apply FC -> ReLU (with dropout) -> softmax
- flat = Flatten()(drop_2)
- hidden = Dense(hidden_size, activation='relu')(flat)
- drop_3 = Dropout(drop_prob_2)(hidden)
- out = Dense(num_classes, activation='softmax')(drop_3)
- model = Model(input=inp, output=out) # To define a model, just specify its input and output layers
- model.compile(loss='categorical_crossentropy', # using the cross-entropy loss function
- optimizer='adam', # using the Adam optimiser
- metrics=['accuracy']) # reporting the accuracy
- model.fit(X_train, Y_train, # Train the model using the training set...
- batch_size=batch_size, nb_epoch=num_epochs,
- verbose=1, validation_split=0.15,shuffle=True) # ...holding out 10% of the data for validation
- source = model.evaluate(X_test, Y_test, verbose=1) # Evaluate the trained model on the test set!
- print(source)
- Test([4,6,3,57,3,234,7,345,2,45,786,435,234,100])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement