inteligencia artificial

Un espacio para compartir y discutir sobre: IA, software libre y redes sociales que implementan TIC

Sunday, December 03, 2006

RedNeuronal.sci

/////////////////////////////////////////////////////////////////////////////////
// INTERFAZ

// crea una red neuronal de varias capas
function r = red(varargin)
r = tlist(['red' 'capas' 'errf' 'W' 'gW' 'x'])
Ni = varargin(1)
k = 2;
capas = list()
while k< t =" varargin(k)" no =" varargin(k+1)" ni =" No" k =" k+2" t =" varargin(k)" t="=" w =" []" x =" list()" k="1:size(capas)" w =" [w,zeros(capas(k)('Rw'))]" y =" reval(r,x,l)" red =" r" l =" size(red('capas'));">red('capas')(1)('Ni')
error("evalRed: input no calza")
end
for k=1:l
x = evalCapa(red('capas')(k),x)
end
y = x

// calcula el error de la red r para cada entrada x y salida deseada d
function e = rerr(r,x,d)
global("red","N","D")
red = r
N = size(x,'c'); D = d
if size(x,'r')<>red('capas')(1)('Ni')
error("evalRed: input no calza")
end
if size(d,'r')<>red('capas')($)('No')
error("evalRed: output no calza")
end
if size(x,'c')<>size(d,'c')
error("evalRed: input no calza con output")
end
for c=red('capas')
x = evalCapa(c,x)
end
e = evalCapa(red('errf'),x)

// calcula el gradiente de la red r para entradas x y salidas deseadas d
function gw = grad(r,x,d)
global("red")
red = r
rgrad(x,d)
gw = red('gW')

// calcula el gradiente de la red r para entradas x y salidas deseadas d
// con diferencias finitas (se utiliza para verificar que la retropropagacion
// este bien implementada)
function gw = gradf(r,x,d)
delta = .0000001
w = r('W')
gw = zeros(w)
e0 = sum(rerr(r,x,d))
for i=1:size(w,'c')
v = w(i); w(i) = v+delta; r('W') = w; e = sum(rerr(r,x,d))
gw(i) = (e-e0)/delta
w(i) = v
end

// entrenamiento batch de red r con entradas x i salidas deseadas d
// f es el factor de entrenamiento, c la cantidad de ciclos de l epocas
// una epoca es una pasada sobre todos los ejemplos
// la variable global ERR contiene la secuencia de errores para cada ciclo
function r = batch(r,x,d,f,c,l)
global("red","ERR")
[lhs,rhs] = argn(0)
if rhs < l =" 1;" red =" r" err =" zeros(1,c+1)" k="1:c" e="1:l" r =" red" r =" batch(r,x,d,1,100,20);" r =" red(4,'afin',2,'tanh',2,'afin',4,'logit',4,'errEC')" x =" eye(4,4)" d =" x">

0 Comments:

Post a Comment

<< Home