In [3]:
import numpy as np
from importlib import reload
import time
import ann
In [4]:
import cnn
In [80]:
training_input = np.load('training_input.npy')
training_output = np.load('training_output.npy')
test_input = np.load('test_input.npy')
test_output = np.load('test_output.npy')
validation_input = np.load('validation_input.npy')
validation_output = np.load('validation_output.npy')
weights0 = np.load('weights0.npy')
weights1 = np.load('weights1.npy')
biases0 = np.load('biases0.npy')
biases1 = np.load('biases1.npy')
In [71]:
ndim_input = 784
ndim_output = 10
n_training = training_input.shape[0]
n_test = test_input.shape[0]
n_validation = validation_input.shape[0]
training_data = (training_input.reshape(n_training, ndim_input), training_output)
test_data = (test_input.reshape(n_test, ndim_input), test_output)
validation_data = (validation_input.reshape(n_validation, ndim_input), validation_output)
In [497]:
small_training = (training_input.reshape(n_training, ndim_input)[0:20000], training_output[0:20000])
In [503]:
20000.*0.985
Out[503]:
In [434]:
reload(ann)
reload(ann)
Out[434]:
In [470]:
n_neurons = np.array([40])
net = ann.Network(ndim_input, ndim_output, n_neurons, cfunc='crossentropy')
net.set_mini_batch_size(10)
net.max_epochs = 15
net.stepsize = 1.5
net.reg_lambda = 1.0
In [511]:
net.stepsize = 0.025
net.reg_lambda = 5.0
#net.set_mini_batch_size(10)
t0 = time.time()
net.SGD(small_training, test_data=test_data)
t1 = time.time()
print("Time lapsed {0:6.3f} secs.".format(t1-t0))
#print("Time for backprop {0} secs.".format(net.time_test))
In [449]:
net.stepsize = 0.05
net.reg_lambda = 10.0
t0 = time.time()
net.SGD(new_training, test_data=validation_data)
t1 = time.time()
print("Time lapsed {0:6.3f} secs.".format(t1-t0))
#print("Time for backprop {0} secs.".format(net.time_test))
In [433]:
net.stepsize = 0.1
net.reg_lambda = 4.0
#net.max_epochs = 5
t0 = time.time()
net.SGD(new_training, test_data=validation_data)
t1 = time.time()
print("Time lapsed {0:6.3f} secs.".format(t1-t0))
print("Time for backprop {0} secs.".format(net.time_test))
In [133]:
net.weights[0] = weights0
net.weights[1] = weights1
In [273]:
(27.094-20.947)/27.094
Out[273]:
In [170]:
net.stepsize = 0.5
In [120]:
np.arange(2, 1+1)
Out[120]:
In [124]:
net.biases
Out[124]:
In [125]:
import matplotlib.pyplot as plt
%matplotlib inline
In [131]:
plt.imshow(training_input[20,:].reshape(28,28),cmap = plt.cm.Greys)
Out[131]:
In [130]:
training_output[20]
Out[130]:
In [378]:
from scipy.ndimage.interpolation import rotate
In [381]:
x = rotate(training_input[20,:].reshape(28,28), 10.)
In [382]:
plt.imshow(x,cmap = plt.cm.Greys)
Out[382]:
In [427]:
angle = (np.random.rand(training_data[0].shape[0])-0.5)*32.
In [384]:
angle
Out[384]:
In [392]:
tnew = training_data[0]
In [428]:
for i in np.arange(tnew.shape[0]):
tnew[i,:] = rotate(training_data[0][i].reshape(28,28), angle[i], reshape=False).reshape(784)
In [5]:
new_training = (np.r_[training_data[0], tnew], np.r_[training_data[1], training_data[1]])
In [ ]:
In [ ]: