Está en la página 1de 14

UNIVERSIDAD DE GUADALAJARA

CENTRO UNIVERSITARIO DE CIENCIAS EXACTAS E INGENIERÍA


DIVISION DE ELECTRONICA Y COMPUTACION

DEPARTAMENTO DE CIENCIAS COMPUTACIONALES

INTELIGENCIA ARTIFICAL II

PRACTICA 01

Pedro Morales Enríquez

Código: 216787639
Sección: D02
Profesor: Julio Esteban Valdés López

Fecha: 28 de septiembre del 2020


ÍNDICE

ÍNDICE ................................................................................................................................... 2
INTRODUCCIÓN .................................................................................................................. 3
FUNCIONES DE ACTIVACIÓN ......................................................................................... 2
Función escalón ........................................................................................................................... 2
Función lineal a tramos ............................................................................................................... 3
Función sigmoidal........................................................................................................................ 4
Función signo .............................................................................................................................. 6
Función tangente hiperbólica ..................................................................................................... 7
Función lineal .............................................................................................................................. 8
Función gaussiana ....................................................................................................................... 9
Función sinusoidal ..................................................................................................................... 10
CONCLUSIÓN .................................................................................................................... 12
INTRODUCCIÓN

En la siguiente practica se presentan los códigos y graficas de las funciones de activación


utilizadas en las redes neuronales. Para dicha practica se ha elegido el lenguaje de
programación Python, el cual tiene una librería que permite dibujar fácilmente dichas
funciones. Entre las funciones de activación que serán implementadas tenemos: La función
Escalón o Umbral la cual es bastante sencilla, en dicha función recibimos un valor si este es
mayor o igual a 0 entonces obtenemos 1 si es menor a 0 obtenemos 0, de igual manera esta
la función signo la cual es muy parecida. La siguiente función es igualmente muy sencilla es
la función lineal a tramos en esta obtenemos 1 si es mayor o igual a 1, obtenemos 0 si es
menor a 0 y tenemos un valor lineal si no cumple las anteriores condiciones, de igual forma
se encuentra la función lineal la cual representa como tal una función lineal con una constante
A que multiplica a v.
FUNCIONES DE ACTIVACIÓN

Función escalón
Código

Primero que nada, importe las librerías matplotlib y numpy, la primera me permite hacer
graficas en Python y la segunda tiene muchos usos, pero en este caso será usada para
generar números. Después de eso definí una función llamada funcionEscalon la cual va a
recibir una variable v la cual representa el valor. En está función primero comparamos si el
valor recibido es mayor a 0 retornamos un 1, si no es así retornamos un 0. Después de eso
ahora vamos a generar una serie de números que van desde el -10.0 hasta el 10.0 en
incrementos de 0.1. Esta serie de números serán guardadas en la variable v. Ahora vamos a
recorrer esa variable con un ciclo for y vamos a ir pasándolos a la función previamente
definida. Los resultados de esto lo vamos a guardar en plt que equivale a nuestra gráfica.
Antes de mostrar la grafica de la función debo definir los limiten en cada eje como en este
caso obtenemos valores de 0 y 1, escogí limites muy pequeños de -2 a 2. Finalmente
mostramos la gráfica con plt.show().

# -*- coding: utf-8 -*-


import matplotlib.pyplot as plt
import numpy

def funcionEscalon(v):
if(v > 0):
return 1
else:
return 0
v = numpy.arange(-10.0, 10.0, 0.1)

plt.plot(v, [funcionEscalon(i) for i in v])

plt.xlim(-2, 2)
plt.ylim(-2, 2)

plt.show()

Grafica
Función lineal a tramos
Código

Primero que nada, importe las librerías matplotlib y numpy, la primera me permite hacer
graficas en Python y la segunda tiene muchos usos, pero en este caso será usada para
generar números. Después de eso definí una función llamada funcionLT la cual va a recibir
una variable v la cual representa el valor. En esta función primero comparamos si el valor
recibido es mayor o igual a 1 retornamos un 1, si es menor a 0 retornamos un 0 y si esta
entre 0 y 1 sin cumplir las anteriores condiciones retornamos el valor de dicha v. Después
de eso ahora vamos a generar una serie de números que van desde el -10.0 hasta el 10.0 en
incrementos de 0.1. Esta serie de números serán guardadas en la variable v. Ahora vamos a
recorrer esa variable con un ciclo for y vamos a ir pasándolos a la función previamente
definida. Los resultados de esto lo vamos a guardar en plt que equivale a nuestra gráfica.
Antes de mostrar la gráfica de la función debo definir los limiten en cada eje como en este
caso obtenemos valores de 0 y 1, escogí limites muy pequeños de -2 a 2. Finalmente
mostramos la gráfica con plt.show().

# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt


import numpy

def funcionLT(v):
if(v >= 1):
return 1
elif(v < 0):
return 0
else:
return v

v = numpy.arange(-10.0, 10.0, 0.1)

plt.plot(v, [funcionLT(i) for i in v])

plt.xlim(-2, 2)
plt.ylim(-2, 2)

plt.show()

Grafica

Función sigmoidal
Código

Primero que nada, importe las librerías matplotlib, numpy y math, la primera me permite
hacer graficas en Python, la segunda tiene muchos usos, pero en este caso será usada para
generar números y la tercera para operaciones matemáticas. Después de eso definí una
función llamada funcionS la cual va a recibir una variable v la cual representa el valor y la
variable a que representa una constante. En esta función simplemente se realiza el cálculo
1/ (1+(e^-av)). Después de eso ahora vamos a generar una serie de números que van desde
el -5.0 hasta el 5.0 en incrementos de 0.1. Esta serie de números serán guardadas en la
variable v y vamos a definir la variable a como 1. Ahora vamos a recorrer esa variable con
un ciclo for y vamos a ir pasándolos a la función previamente definida. Los resultados de
esto lo vamos a guardar en plt que equivale a nuestra gráfica. Antes de mostrar la gráfica de
la función debo definir los limiten en cada eje como en este caso obtenemos valores de 0 y
1, escogí limites muy pequeños de -5 a 5 en el eje x y de 0 a 1 en el eje y. Finalmente
mostramos la gráfica con plt.show().

# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt


import numpy
import math

def funcionS(v, a):


return ((1)/(1 + (math.exp(-a*v))))

v = numpy.arange(-5.0, 5.0, 0.1)


a = 1

plt.plot(v, [funcionS(i, a) for i in v])

plt.xlim(-5, 5)
plt.ylim(0, 1)

plt.show()

Grafica
Función signo
Código

Primero que nada, importe las librerías matplotlib y numpy, la primera me permite hacer
graficas en Python y la segunda tiene muchos usos, pero en este caso será usada para
generar números. Después de eso definí una función llamada funcionSigno la cual va a
recibir una variable v la cual representa el valor. En esta función primero comparamos si el
valor recibido es mayor a v retornamos un 1, sino comparamos si es menor a 0 para retornar
un -1 si no es así retornamos un 0. Después de eso ahora vamos a generar una serie de
números que van desde el -2.0 hasta el 2.0 en incrementos de 0.1. Esta serie de números
serán guardadas en la variable v. Ahora vamos a recorrer esa variable con un ciclo for y
vamos a ir pasándolos a la función previamente definida. Los resultados de esto lo vamos a
guardar en plt que equivale a nuestra gráfica. Antes de mostrar la gráfica de la función
debo definir los limiten en cada eje como en este caso obtenemos valores de 0 y 1, escogí
limites muy pequeños de -2 a 2. Finalmente mostramos la gráfica con plt.show().

# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt


import numpy

def funcionSigno(v):
if(v > 0):
return 1
elif(v < 0):
return -1
else:
return v

v = numpy.arange(-2.0, 2.0, 0.1)

plt.plot(v, [funcionSigno(i) for i in v])

plt.xlim(-2, 2)
plt.ylim(-2, 2)

plt.show()

Grafica
Función tangente hiperbólica
Código

Para la función tangente hiperbólica simplemente usando la librería math llamamos tanh y
retornamos lo obtenido con v como parámetro.

# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt


import numpy
import math

def funcionTangenteH(v):
return math.tanh(v)

v = numpy.arange(-5.0, 5.0, 0.01)

plt.plot(v, [funcionTangenteH(i) for i in v])

plt.xlim(-5, 5)
plt.ylim(-1, 1)

plt.show()
Grafica

Función lineal
Código

La función lineal como se conoce es muy simple pasamos como parámetro v y retornamos
el mismo valor, solo que este valor será multiplicado por una constante A.

# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt


import numpy

def funcionLineal(v, A):


return A*v

v = numpy.arange(-1000.0, 1000.0, 0.1)


A = 1
plt.plot(v, [funcionLineal(i, A) for i in v])

plt.xlim(-1000, 1000)
plt.ylim(-1000, 1000)

plt.show()
Grafica

Función gaussiana
Código

La función gaussiana en este caso simplemente pasare como


parámetro las constantes A, B y la variable v. Después realizo el cálculo apoyándome de la
librería math. Y retorno el resultado.

# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt


import numpy
import math

def funcionG(v, A, B):


return (A*(math.exp((-B*(v**2)))))

v = numpy.arange(-1.0, 1.0, 0.000001)


A = 1
B = 1

plt.plot(v, [funcionG(i, A, B) for i in v])


plt.xlim(-1, 1)
plt.ylim(0, 1)

plt.show()

Grafica

Función sinusoidal
Código

Para esta última función, nuevamente será necesaria la librería math ya que ahora vamos a
calcular la función seno, pero con 3 constantes y una variable. La constante B multiplica a
la variable v y el resultado le sumamos C. Lo que obtenemos le calculamos el seno y
finalmente lo multiplicamos por la constante A, después solo se retorna el valor.

# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt


import numpy
import math

def funcionSinusoidal(v, A, B, C):


return (A*(math.sin((B*v)+C)))
v = numpy.arange(-10.0, 10.0, 0.1)
A = 1
B = 1
C = 1

plt.plot(v, [funcionSinusoidal(i, A, B, C) for i in v])

plt.xlim(-10, 10)
plt.ylim(-1, 1)

plt.show()

Grafica
CONCLUSIÓN

Finalmente, para concluir considero que resulto ser una practica a simple vista muy
sencilla, los códigos no presentaron un gran grado de dificultad, el valor agregado está en el
análisis de la funciones, algunas de ellas como la umbral, la signo, la lineal y lineal a
tramos son bastantes simples, pero otras como la exponencial la cual va ir en decremento o
en aumento sin tocar el 0 y el 1 y para determinar tal decremento necesitaremos de la
constante a, la cual puede tener un valor negativo o positivo. Otros casos con la tangente
hiperbólica, la cual es visualmente muy parecido a la sigmoidal, la sinusoidal sabemos que
representa la función seno con algunas variaciones debido a las constantes. Y finalmente
esta la función gaussiana, esta es muy parecida a una función cuadrática, solo que aquí
utilizamos una constante Euler multiplicada por la constante A elevada a la -B*v^2 como
se puede observar la v cuadrada permite obtener este efecto de función cuadrática.

También podría gustarte