You are on page 1of 5

27/10/22, 20:50 xarxa neuronal - Colaboratory

import numpy as np

import scipy as sc

import matplotlib.pyplot as plt

from sklearn.datasets import make_circles

# CREAR EL DATASET

n = 500
p = 2

X, Y = make_circles (n_samples=n, noise=0.07 , factor=0.5)

Y = Y[:, np.newaxis]

plt.scatter(X[Y[:, 0] == 0, 0], X[Y[:, 0]== 0, 1], c="blue")

plt.scatter(X[Y[:, 0] == 1, 0], X[Y[:, 0] == 1, 1], c="red")

plt.axis("equal")

plt.show()

Y.shape

(500, 1)

X.shape

(500, 2)

# TIPUS DE CAPA DE LA XARXA

class neural_layer():
https://colab.research.google.com/drive/1QH8FTLAqEyEEHHPtm3k5_7yflrce3Non#scrollTo=FAtGTbHAHjRi 1/5
27/10/22, 20:50 xarxa neuronal - Colaboratory

def __init__(self, n_conn, n_neur, act_f):

self.act_f = act_f

self.b = np.random.rand(1, n_neur) * 2 - 1

self.W = np.random.rand(n_conn, n_neur) * 2 - 1

# FUNCIONS D'ACTIVACIÓ

from numpy.compat.py3k import npy_load_module

from sklearn.utils import np_version

sigm = (lambda x: 1 / (1 + np.e ** (-x)), lambda x: x * (1 - x))

relu = lambda x: np.maximum(0, x)

tanh = lambda x: 2 / (1 + e ** (-2 * x)) - 1

_x = np.linspace(-5, 5, 100)

plt.plot(_x, relu(_x))

[<matplotlib.lines.Line2D at 0x7f260628b390>]

l0 = neural_layer(p, 4, sigm)

l1 = neural_layer(4, 8, sigm)

#...

def create_nn(topology, act_f):

nn = []
https://colab.research.google.com/drive/1QH8FTLAqEyEEHHPtm3k5_7yflrce3Non#scrollTo=FAtGTbHAHjRi 2/5
27/10/22, 20:50 xarxa neuronal - Colaboratory

for l, layer in enumerate(topology[:-1]):

nn.append(neural_layer(topology[l], topology[l+1], act_f))

return nn

topology = [p, 4, 8, 16, 8, 4, 1]


create_nn(topology, sigm)

[<__main__.neural_layer at 0x7f260681f990>,
<__main__.neural_layer at 0x7f260681fbd0>,
<__main__.neural_layer at 0x7f260681fe50>,
<__main__.neural_layer at 0x7f26061d27d0>,
<__main__.neural_layer at 0x7f26061d2050>,
<__main__.neural_layer at 0x7f26061d2fd0>]

topology = [p, 4, 8, 16, 8, 4, 1]

neural_net = create_nn(topology, sigm)

l2_cost = (lambda Yp, Yr: np.mean((Yp - Yr) ** 2),


lambda Yp, Yr: (Yp - Yr))

def train(neural_net, X, Y, l2_cost, lr=0.5, train=True):

out = [(None, X)]

# Forward pass

for l, layer in enumerate(neural_net):

z = out[-1][1] @ neural_net[l].W + neural_net[l].b

a = neural_net[l].act_f[0](z)

out.append ((z,a))

if train:

# Backward pass

deltas = []

for l in reversed(range(0, len(neural_net))):

z = out[l+1][0]

a = out[l+1][1]
https://colab.research.google.com/drive/1QH8FTLAqEyEEHHPtm3k5_7yflrce3Non#scrollTo=FAtGTbHAHjRi 3/5
27/10/22, 20:50 xarxa neuronal - Colaboratory
a = out[l+1][1]

if l == len(neural_net) - 1:

deltas.insert(0, l2_cost[1](a, Y) * neural_net[l].act_f[1](a))

else:

deltas.insert(0, deltas[0] @ _W.T * neural_net[l].act_f[1](a))

_W = neural_net[l].W

#Gradient descent

neural_net[l].b = neural_net[l].b - np.mean(deltas[0], axis=0, keepdims=True) * lr

neural_net[l].W = neural_net[l].W - out[l][1].T @ deltas[0] * lr

return out[-1][1]

train(neural_net, X, Y, l2_cost, 0.5)

[0.66500735],
[0.66498335],
[0.66492045],
[0.66488548],
[0.66491315],
[0.66486875],
[0.66490174],
[0.66493663],
[0.66489443],
[0.66499157],
[0.66487897],
[0.66506849],
[0.6650323 ],
[0.6649549 ],
[0.66492985],
[0.6649297 ],
[0.66496782],
[0.66488681],
[0.66498202],
[0.66490074],
[0.6648655 ],
[0.66500971],
[0.66501855],
[0.66491563],
[0.66489355],
[0.66488786],
[0.6650457 ],
[0.66492801],
[0.66494152],
[0 66492084]
https://colab.research.google.com/drive/1QH8FTLAqEyEEHHPtm3k5_7yflrce3Non#scrollTo=FAtGTbHAHjRi 4/5
27/10/22, 20:50 xarxa neuronal - Colaboratory
[0.66492084],
[0.66496819],
[0.66492826],
[0.66500218],
[0.66492853],
[0.66487467],
[0.66502488],
[0.66495355],
[0.66491566],
[0.66496312],
[0.66500828],
[0.66490512],
[0.66491503],
[0.6650226 ],
[0.66500815],
[0.66507273],
[0.66496279],
[0.66499324],
[0.6648718 ],
[0.66501092],
[0.66501578],
[0.66492021],
[0.66487208],
[0.66493231],
[0.6650805 ],
[0.6649546 ],
[0.66492985],
[0.66507011],
[0.66491901]])

Colab paid products - Cancel contracts here

check 0s completed at 8:50 PM

https://colab.research.google.com/drive/1QH8FTLAqEyEEHHPtm3k5_7yflrce3Non#scrollTo=FAtGTbHAHjRi 5/5

You might also like