maxpool1, layer2, relu2, maxpool2, flatten, layer3, softmax1 ), loss1) loss_epoch = [] accuracy_epoch =[] # training and predicting learning_rate = 0.1 loss_epoch = (model.fit(x_train, y_train, epochs=15, lr=learning_rate)) y_pred = model.predict(x_test) acc = np.mean(y_pred == y_test) print(str(learning_rate) + "done!!!") print(str(acc)) accuracy_epoch.append([learning_rate, acc]) # plot the training loss vs epoch plt.plot(range(0, 15), loss_epoch, label="learning rate = 0.1") plt.legend() plt.grid() plt.xticks(np.arange(0, 15, 1)) plt.xlabel("epoch") plt.ylabel("loss")
lr=[0.1, 0.01, 0.2] for i in lr: model = Sequential(layers=(FullLayer(32 * 32 * 3, 2500), ReluLayer(), FullLayer(2500, 2000), ReluLayer(), FullLayer(2000, 1500), ReluLayer(), FullLayer(1500, 1000), ReluLayer(), FullLayer(1000, 500), ReluLayer(), FullLayer(500, 4), SoftMaxLayer()), loss=CrossEntropyLayer()) finalloss = model.fit(x_train, y_train,epochs=20, lr=i) y_pred = model.predict(x_test) accuracy=(np.mean(y_test == y_pred)) print('Accuracy: %.2f' % accuracy) np.append(test_accuracy, accuracy) plt.plot(range(epochs), finalloss, label=('Learning rate=',i)) plt.xlabel('epochs') plt.ylabel('Training loss') plt.title('Training loss Vs Epochs for the CIFAR100 data set') plt.legend() plt.show() plt.plot(lr, test_accuracy) plt.title('Test Accuracy Vs Learning Rate for Modified NN') plt.xlabel('Learning rate') plt.ylabel('Testing Accuracy') plt.show()
loss = CrossEntropyLayer() lr = 0.1 scores = [] n_epochs = 5 batch_size = 128 x_train = np.array(x_train) y_train = np.array(y_train) x_test = np.array(x_test) y_test = np.array(y_test) model = Sequential((layer1, relu1, layer2, layer3, relu2, layer4, layer5, layer6, softmax), loss) loss2,loss3 = model.fit(x_train, y_train, x_test, y_test, n_epochs, lr, batch_size) print("Train Loss", loss2) print("Test Loss", loss3) y_pred = model.predict(x_test) print('Predictions', y_pred) # y_train1= y_train.argmax(1) print('Actual', np.argmax(y_test, axis=1)) scores.append(np.mean(y_pred == np.argmax(y_test, axis=1))) print("Neural accuracy for n_epochs=" + str(n_epochs) + " and Learning Rate=" + str(lr) + " is: " + str(np.argmax(y_test, axis=1))) scores = np.asarray(scores) print(scores)
myNet = Sequential( layers=( ConvLayer(n_i=3, n_o=16, h=3), ReluLayer(), MaxPoolLayer(size=2), ConvLayer(n_i=16, n_o=32, h=3), ReluLayer(), MaxPoolLayer(size=2), FlattenLayer(), FullLayer(n_i=12 * 12 * 32, n_o=6), # no neutral class:/ SoftMaxLayer()), loss=CrossEntropyLayer()) print("Initiating training") loss[counter, :] = myNet.fit(x=train_x, y=train_y, epochs=epochs, lr=lr, batch_size=batch_size) myNet.save() pred = myNet.predict(test_x) accuracy = np.mean(pred == test_y) errork[counter] = 1 - accuracy print('At fold = ' + str(counter + 1)) print('Accuracy of Convolutional Neural Network = ' + str(accuracy)) counter += 1 error5folds = np.mean(errork) accuracy = 1 - error5folds print('At learning rate = ' + str(lr) + 'and fold = ' + str(counter + 1)) print('Accuracy of Convolutional Neural Network = ' + str(accuracy))
from layers.cross_entropy import CrossEntropyLayer from layers.dataset import fer2013 import numpy as np (train_x, train_y), (val_x,val_y), (test_x, test_y) = fer2013() #Since network is extremely slow, training on the first 1500 images train_x = train_x[0:1500,:,:,:] lr = 0.1 epochs = 100 batch_size = 128 myNet = Sequential(layers=(ConvLayer(n_i=1,n_o=16,h=3), ReluLayer(), MaxPoolLayer(size=2), ConvLayer(n_i=16,n_o=32,h=3), ReluLayer(), MaxPoolLayer(size=2), FlattenLayer(), FullLayer(n_i=12*12*32,n_o=7), SoftMaxLayer()), loss=CrossEntropyLayer()) print("Initiating training") loss = myNet.fit(x=train_x,y=train_y,epochs=epochs,lr=lr,batch_size=batch_size) myNet.save() pred = myNet.predict(val_x) accuracy = np.mean(pred == val_y) print('At learning rate = '+str(lr)) print('Accuracy of Convolutional Neural Network = '+str(accuracy))
from layers.full import FullLayer from layers.softmax import SoftMaxLayer from layers.cross_entropy import CrossEntropyLayer from layers.sequential import Sequential from layers.relu import ReluLayer from layers.dataset import cifar100 from sklearn.metrics import accuracy_score import numpy as np (x_train, y_train), (x_test, y_test) = cifar100(1213391684) layer1 = FullLayer(3072, 2052) relu1 = ReluLayer() layer2 = FullLayer(2052, 680) relu2 = ReluLayer() layer3 = FullLayer(680, 4) softmax = SoftMaxLayer() loss = CrossEntropyLayer() model = Sequential((layer1, relu1, layer2, relu2, layer3, softmax), loss) model.fit(x_train, y_train, epochs=25, lr=0.06) out = model.predict(x_test) y = np.reshape(y_test, (x_test.shape[0], 1)) print("y_test.shape:", y.shape) print("out.shape:", out.shape) t = accuracy_score(y, out) print(y_test, "Predicted Val", out) print('accuracy score', t) score = (np.mean(out == y)) print("score", score)