mirror of
https://github.com/Doctorado-ML/NeuralNetwork.git
synced 2025-08-15 15:35:54 +00:00
First commit
This commit is contained in:
54
main.py
Normal file
54
main.py
Normal file
@@ -0,0 +1,54 @@
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
import time
|
||||
from n_network import N_Network, plot_decision_boundary
|
||||
|
||||
|
||||
def load_planar_dataset(random_seed):
|
||||
np.random.seed(random_seed)
|
||||
m = 400 # number of examples
|
||||
N = int(m / 2) # number of points per class
|
||||
D = 2 # dimensionality
|
||||
X = np.zeros((m,D)) # data matrix where each row is a single example
|
||||
Y = np.zeros((m, 1), dtype='uint8') # labels vector (0 for red, 1 for blue)
|
||||
a = 4 # maximum ray of the flower
|
||||
|
||||
for j in range(2):
|
||||
ix = range(N * j, N * (j + 1))
|
||||
t = np.linspace(j * 3.12, (j + 1) * 3.12, N) + np.random.randn(N) * 0.2 # theta
|
||||
r = a * np.sin(4 * t) + np.random.randn(N) * 0.2 # radius
|
||||
X[ix] = np.c_[r * np.sin(t), r * np.cos(t)]
|
||||
Y[ix] = j
|
||||
|
||||
X = X.T
|
||||
Y = Y.T
|
||||
return X, Y
|
||||
|
||||
random_seed = 1
|
||||
Xtrain, ytrain = load_planar_dataset(random_seed)
|
||||
X = Xtrain.T
|
||||
y = ytrain.T
|
||||
print('X', X.shape, 'y', y.shape)
|
||||
|
||||
# Visualize the data:
|
||||
plt.scatter(X[:, 0], X[:, 1], c=y.T[0], s=40, cmap=plt.cm.Spectral);
|
||||
plt.title('Dataset')
|
||||
plt.show();
|
||||
|
||||
#Define a four layer network
|
||||
nu = [X.shape[1], 10, 7, 5, 1]
|
||||
xg = [0, N_Network.relu, N_Network.relu, N_Network.relu, N_Network.sigmoid]
|
||||
xgprime = [0, N_Network.relu_prime, N_Network.relu_prime, N_Network.relu_prime, N_Network.sigmoid_prime]
|
||||
init_params = dict(m=X.shape[0], n=X.shape[1], n_units=nu, g=xg, optim='sgd',
|
||||
gprime=xgprime, epochs=10000, alpha=0.075)
|
||||
nd = N_Network(init_params)
|
||||
nd.set_seed(random_seed)
|
||||
costs = nd.train(X, y)
|
||||
print("First cost: {0:.6f} final cost: {1:.6f}".format(costs[0], costs[-1]))
|
||||
print("Number of units in each layer: ", nu)
|
||||
nd.print_time()
|
||||
nd.plot_costs()
|
||||
pred = nd.valid(X, y)
|
||||
indices = nd.mislabeled(y, pred)
|
||||
# Plot decission boundary
|
||||
plot_decision_boundary(nd, X, y, True, '4 Layers N_Network')
|
Reference in New Issue
Block a user