mirror of
https://github.com/Doctorado-ML/NeuralNetwork.git
synced 2025-08-15 07:25:55 +00:00
54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
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') |