top of page
Foto do escritorPaulo Raposo

Rede neural com 3 camadas

Em Deep Learning trabalhamos com redes neuronais. Pessoalmente, só sei programar com alguma razoabilidade em Python. Portanto, impunha-se a criação duma rede neuronal programada em Python.

Esta rede tem 3 camadas:

* Camada 1 com 3 neurónios (Input)

* Camada 2 com 4 neurónios (hidden layer)

* Camada 3 com 1 neurónio (output)


Vamos colocar 4 diferentes inputs e aproximar 60 000 vezes com uma geração



 

import numpy  as np
#rede neuronal 3 x 5 x 2

def sigmoide(x, derivada):
	if(derivada):
		return x*(1-x)
	return 1/(1+np.exp(-x))

#input data

#X=np.array([[0,0,1],[0,1,1],[1,0,1],[1,1,1]])
X=np.array([[1669631,2105841,2821997],[2105841,2821997,2288713],[2821997,2288713,2250142],[2288713,2250142,3053129]])
#X=(X-1634380)/1634380


#output
Y=np.array([[2288713],[2250142],[3053129],[208252]])
#Y=(Y-1634380)/1634380

np.random.seed(1)

# matrizes de synapse

syn0= 2* np.random.random((3,4))-1
syn1= 2* np.random.random((4,1))-1



#traning code

for j in range(60000):
	camada0=X
	camada1=sigmoide(np.dot(camada0,syn0),False)
	camada2=sigmoide(np.dot(camada1,syn1),False)

	camada2_erro=Y-camada2

	if(j%10000)==0:
		print("error:"+str(np.mean(np.abs(camada2_erro))))

#backpropagation
	l2_delta=camada2_erro * sigmoide(camada2,True)	
	l1_error=l2_delta.dot(syn1.T)

	l1_delta=l1_error* sigmoide(camada1,True)
	#atualizar pesos gradient descent
	syn1+=camada1.T.dot(l2_delta)
	syn0+=camada0.T.dot(l1_delta)

print("Valor previsto")
camada1=sigmoide(np.dot(camada0,syn0),False)
camada2=sigmoide(np.dot(camada1,syn1),False)
print((camada2.T.dot(syn1)*1634380)+1634380)

12 visualizações0 comentário

Posts recentes

Ver tudo

Comments


bottom of page