Está en la página 1de 76

Inteligencia Artificial

Clase 10

Profesor
Dr. Mauricio Sepúlveda
1
Temario

Redes de Neuronas
• Introducción
• Perceptrón
• Redes de N capas
• Ajuste de Parámetros
• Como programar una RNN en Python
• Laboratorio

2
Desafío de clasificación
1. Ingresa a https://teachablemachine.withgoogle.com/train/image
2. Recolecta desde internet imágenes de distintas profesiones
3. Carga las imágenes a la página agrupándolas por clases de profesiones
4. Entrena el modelo de clasificación
5. Testealo con nuevas imágenes para que veas la precisión del modelo o con tu
cámara mira como te clasifica

El desafío:
1. El profesor les
enviará a su correo
10 imágenes, deben
responder cuantas
son clasificadas
correctamente con
un 95% de
precisión.
2. Gana el mejor
modelo de
clasificación
Desafío en reconocimiento de posturas
1. Ingresa ahttps://teachablemachine.withgoogle.com/train/pose
2. Activa la cámara y registra tu cara y forma del cuerpo en una clase
3. Realiza la misma actividad con varios familiares de tu casa, fotos u figuras
4. Entrena el modelo
5. Testealo con la cámara para ver si reconoce tu postura, carga nuevas imágenes
para que veas la precisión del modelo.

El desafío:
1. Intente engañar
al reconocedor,
por ejemplo, con
fotos, etc.
2. Envíe su
experimento y
conclusiones al
profesor.
Humor en IA

5
Introducción
Machine learning o Aprendizaje supervisado
Es una técnica que permite deducir o construir una función o modelo a
partir de datos de entrenamiento.
Esta función o modelo es capaz de predecir el valor correspondiente a
cualquier objeto de entrada que sea similar a los datos de
entrenamiento.
El modelo, se construye con un proceso de entrenamiento, automático.

FUNCION O MODELO ENTRENADO PREVIAMENTE CON


MACHINE LEARNING

6
Introducción
Machine learning o Aprendizaje supervisado
Es una técnica que permite deducir o construir una función o modelo a
partir de datos de entrenamiento.
Esta función o modelo es capaz de predecir el valor correspondiente a
cualquier objeto de entrada que sea similar a los datos de
entrenamiento.
El modelo, se construye con un proceso de entrenamiento, automático.

FUNCION O MODELO ENTRENADO PREVIAMENTE

7
Introducción
• Cuando construimos una función de regresión estamos realizando
machine Learning
• Se pueden crear infinitos modelos para los mismos datos de
entrenamiento.

¿Cual modelo predice mejor el nuevo valor en verde?

8
Introducción
Redes neuronales: Son sistemas informáticos inspirados vagamente en
las redes neuronales biológicas que constituyen los cerebros de los
animales.

Estos sistemas aprenden y se forman a sí mismos, en lugar de ser


programados de forma explícita, mediante el aprendizaje automático.

Una Red Neuronal se basa en una colección de unidades conectadas o


nodos llamados neuronas artificiales, que modelan libremente las
neuronas en un cerebro biológico artificial. Cada conexión, como las
sinapsis en un cerebro biológico real, puede transmitir una señal a otras
neuronas.

Una vez que la red este entrenada permite ser utilizada para predecir o
clasificar de forma similar a como está implícitamente expresado en los
datos de entrenamiento.

9
Introducción
Fundamentos biológicos

Elemento fundamental: la neurona


Funciones de las neuronas
• Recogida información
• Integración en un código de
activación
• Transmisión codificada en forma
de frecuencia de impulsos
• Distribución espacial a través del
axón
• Transmisión
• Neuronas subsiguientes
• Células efectoras
10
Perceptrón
• Es la primera red neuronal entrenable creada.
• Fue inventado en 1958 en el Laboratorio
Aeronáutico de Cornell por Frank Rosenblatt, y
financiado por la Oficina de Investigación Naval de
los EEUU.
• Utiliza el aprendizaje supervisado para ajustar sus
ponderaciones en respuesta a una señal
comparativa entre la producción real de la red y la
producción objetivo. (Aprende de los errores).
• Está compuesta de una neurona.
• Función objetivo, devuelve una clase.

11
Perceptrón simple
Bias

12
Perceptrón simple
Diseñado principalmente para clasificar patrones linealmente
separables.
Los patrones son linealmente separables significa que existe un
límite de decisión hiperplanar multidimensional que clasifica los
patrones en dos clases.

Linealmente separable No separable


linealmente
13
La separabilidad lineal también es posible en más
de 3 dimensiones, pero es más difícil de visualizar
Arquitectura
Red monocapa con una neurona de salida conectada
a todas las entradas

15
Arquitectura

En general, para n dimensiones:

16
Perceptrón
Teorema de convergencia del perceptrón
Si el conjunto de entrenamiento es linealmente separable, existe un
conjunto de pesos para los cuales el entrenamiento del Perceptrón
convergerá en un tiempo infinito y los patrones de entrenamiento
serán correctamente clasificados.

En el caso bidimensional, el
teorema se traduce en
encontrar la línea definida
por w1x1 + w2x2 - b = 0, que
clasifica adecuadamente los
patrones de entrenamiento.

17
Algoritmo de entrenamiento
Algoritmo de entrenamiento de un perceptrón monocapa
1. Inicialice los pesos y el bias/sesgo a valores
aleatorios pequeños.
2. Elija un patrón de entrada-salida (x, t) de los datos
de entrenamiento.
3. Calcule la salida real de la red y = 𝜑 σ𝑛𝑖=1 𝑤𝑖 𝑥𝑖 − 𝑏
4. Ajuste los pesos y el bias/sesgo de acuerdo con la
regla de aprendizaje de Perceptrón: Δwi = η(t – o)xi,
y Δb = -η(t – o), donde η ∈ [0,1] es la tasa de
aprendizaje del Perceptrón.
5. Si se completa una iteración/época completa, pase
al siguiente paso; de lo contrario, vaya al Paso 2.
6. Si los pesos y el sesgo alcanzaron un estado estable
(Δwi ≈ 0), es decir no cambiar en la nueva epoca,
entonces detenga el aprendizaje; de lo contrario,
realice mas iteraciones a partir del Paso 2. 18
Ejemplo
Cálcule los pesos y bias de un perceptrón monocapa de 1
neurona

Clasifique los siguientes patrones usando η = 0.5:


Clase 1 con valor objetivo -1: T = (2,0) , U = (2,2) , V = (1,3)
Clase 2 con valor objetivo +1: X = (-1,0), Y = (-2,0), Z = (-1,2)

b?

X1 w1?
o
X2 w2?

19
Ejemplo
Deje que los pesos iniciales sean w1 = -1, w2 = 1, b = -1
Por lo tanto, el límite inicial se define por x2 = x1 – 1

Note que queda T apropiadamente clasificado, pero no U y


V.

b = -1

X1 w1 = -1
o
X2 w2 = 1

20
Ejemplo
Gráficamente, se puede ver de esta manera.

21
Ejemplo
Comencemos seleccionando el patrón U con su target
esperado t = -1 y apliquémoslo en el perceptrón, se tiene
que:

o = 𝜑 w1x1 + w2x2 − b = 𝜑 −1∗2 + 1∗2 + 1 =1

Luego
Δwi = η(t – o)xi
Δw1 = Δw2 = 0,5(-1 – 1)*2 = -2

Y Δb = -η(t – o) = -0,5(-1 – 1) = +1

Entonces w1 = w1 + Δw1 = -1 + -2 = -3
w2 = w2 + Δw2 = 1 + -2 = -1
b = b + Δb = -1 + -1 = 0 22
Ejemplo
El perceptrón queda como indica el dibujo siguiente:

b=0

X1 w1 = -3
o
X2 w2 = -1

Por lo tanto, el límite inicial se define por x2 = -3x1

23
Humor en IA

24
Funciones de activación
Funciones de activación
La función de activación, emula el procesamiento
dentro del cuerpo de la neurona, de las entradas
recibidas por sus dendritas.
Algunas funciones de activación clásicamente usadas
en redes neuronales:
• Simple continuo (la salida es igual a lo que entra)
• Escalón o umbral
• Función Lineal de a tramos
• No lineal: Sigmoidea

La principal gracias de estas funciones es que son


fácilmente derivables y facilitan en cálculo de los W o
pesos.
25
Funciones de activación
Función Escalón

26
Funciones de activación
Función Lineal de a tramos

27
Funciones de activación
Función No lineal: Logística o sigmoidea

28
Modelos comunes de red
monocapas

Binary
perceptrons

Continuous perceptrons
Otro algoritmo de entrenamiento:
Método del descenso por el gradiente

30
Método del descenso por el
gradiente

31
Método del descenso por el
gradiente

32
Método del descenso por el
gradiente

33
Método del descenso por el
gradiente

34
La Regla Delta

35
Comentarios

36
Redes neuronales de Múltiples
niveles

• Los Perceptrones tienen una capacidad expresiva


limitada. Es por esto que vamos a estudiar las
redes multicapa

• En una red multicapa, las unidades se estructuran


en capas, en las que las unidades de cada capa
reciben su entrada de la salida de las unidades de
la capa anterior, posee:
• Capa de entrada
• Capa de salida
• Capas ocultas

37
Ejemplo de una red feed-forward
de 2 niveles

wji

wji

Feed Forward Networks: las conexiones entre las


unidades no forman un ciclo.
38
Red Feedforward de n niveles

39
Que hace una red feed-forward de 2
niveles?.

• Si hay una capa de suficientes unidades ocultas, la entrada puede ser


recodificada (tal vez simplemente memorizada)

• Esta recodificación permite representar cualquier mapeo. Usualmente,


con una sola capa oculta basta para la mayoría de las aplicaciones
reales 40
Red Feedforward de n niveles
¿Que pueden hacer estas redes?

41
Trabajo de Laboratorio
Red neuronal

• Utilice la aplicación http://playground.tensorflow.org


• Intente general una clasificación para el siguiente
problema:

42
Red Feedforward de 2 niveles
Una vez que la red esta entrenada, la evaluación es
fácil y muy rápida

43
Cómo se pueden entrenar una RNN de N capas
ocultas?

44
Red Feedforward de n niveles
Notación

45
Ejemplo de uso de RN feed-
forward
Como manejar con apoyo de una RN ?

46
Ejemplo de uso de RN feed-
forward

Entrada de
Entrenamiento
u = (u1 u2 … u960)
= image pixels

47
Ejemplo de uso de RN feed-
forward

Cuantos pesos W
se deben
calcular?

Cuantos datos de
entrenamiento se
requieren?

48
Ejemplo de uso

49
¿Cómo se puede entrenar una
Red Feedforward de n niveles?
Entrenamiento

50
Red Feedforward de n niveles
Entrenamiento

La demostración esta muy bien explicada en:


https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/

51
Red Feedforward de n niveles
El algoritmo de Retropropagación

52
Ejemplo de entrenamiento

53
Red Feedforward de n niveles
Se pueden usar diferentes criterios de parada en el
algoritmo de retropropagación.

• Número de iteraciones prefijadas.


• Cuando el error sobre el conjunto de entrenamiento
está por debajo de una cota prefijada.

En este último caso, se corre el riesgo de sobreajuste o


sobre entrenamiento, por lo que lo más frecuente es
usar un conjunto de prueba independiente para validar
el error.

54
Red Feedforward de n niveles
Sobreentrenamiento
• Se puede hacer que una ANN funcione demasiado
bien en un conjunto de entrenamiento.
• Pero pierde rendimiento ante los conjuntos de testeo
ver la imagen siguiente.

Test set
Err

Training set

Training time
55
Red Feedforward de n niveles
Sobreentrenamiento
• Se puede hacer que una ANN funcione demasiado
bien en un conjunto de entrenamiento.
• Pero pierde rendimiento ante los conjuntos de testeo
Detener el
ver la imagen siguiente.
entrenamiento en punto
donde intersectan las 2
curvas evita el
sobreentramiento

Test set
Err

Training set

Training time
56
Red Feedforward de n niveles
Sobreentrenamiento

57
Efecto del Número de nodos ocultos en
la aproximación de la función

 Considere esta función f(x) = x sin (x)


 Seis muestras de entrada / salida se seleccionaron
del rango [0,10] de la variable x
 El primer entrenamiento fue hecha para una red
con 3 nodos ocultos.
 Luego se realizó otra ejecución para una red con 5
y 20 nodos, respectivamente.

VEAMOS COMO APROXIMA LA RNN

58
Efecto del Número de nodos ocultos 5 nodos fue capaz de
interpolar bastante

en la aproximación de la función bien el


comportamiento no
lineal de la curva.

3 nodos no fueron Un mayor número de


capaces de nodos no siempre es
aproximarse fielmente mejor. Puede
a la función, dado que sobreentrenar la red.
las no linealidades Esto sucede cuando la
inducidas por la red no red comienza a
fueron suficientes para memorizar los
interpolar bien entre patrones en lugar de
las muestras. interpolarlos.
59
Efecto del número de datos de entrenamiento
en la aproximación de la función

• Considere esta función f (x) = x sin (x)


• Supongamos una red con un número fijo de nodos
(ejemplo cinco), pero con un número variable de
patrones de entrenamiento.
• La primera ejecución fue hecha para una red con 3
tres muestras
• Se realizó otra ejecución para una red con 10 y 20
muestras, respectivamente.

VEAMOS COMO APROXIMA LA RNN

60
Efecto del número de datos de entrenamiento
en la aproximación de la función Un mayor número de
datos de
entrenamiento
proporcionó mejores
resultados.

El mejor resultado se
Con tres datos de obtuvo para el caso de
entrenamiento no fue 20 patrones de
capaz de proporcionar entrenamiento. Aunque
una asimilación con la es más costoso/lento
curva original. entrenar una red con
mayor número de
datos de
entrenamiento.
61
Ajuste de Parámetros
Preprocesamiento de datos de entrada
• Ojalá normalizados entre 0 y 1.
• Sino, dejar media sea cero, o un valor muy bajo con respecto a la
varianza.
• Los datos de entrada no deben estar correlacionados.
• Las variables de entrada deben tener una varianza similar:
Dispersión de los datos con respecto a la media aritmética.
Pesos iniciales
• Los pesos iniciales deben ser valores pequeños para evitar la
“saturación” de las neuronas:
• Valores de los pesos de “entrada-capa-media” ojalá mayores que
aquellos pesos “capa-media-salida” dado que actualizan sus
valores con los errores de back-propagation
• Utilizar entrenamiento “Batch”: Pesos son actualizados una vez
que todas las observaciones son presentadas a la red neuronal.
Tasa de aprendizaje
• Se recomienda utilizar combinaciones de tasas de aprendizaje
(η) para el entrenamiento de una redes, que vayan disminuyendo
62
Limitaciones de la red de múltiples
capas
• Entre los problemas bien conocidos que pueden obstaculizar la
generalización o las capacidades de aproximación de RN está
el relacionado con el comportamiento de convergencia de los
pesos de las conexiones durante la etapa de aprendizaje.
• De hecho, el algoritmo basado en la pendiente del gradiente
utilizado para actualizar los pesos de la red puede nunca
converger a los mínimos globales.
• Se han propuesto muchos remedios para abordar este
problema, ya sea mediante el reciclaje de la red varias veces o
mediante el uso de técnicas de optimización como las basadas
en:
• Heurísticas de Búsqueda local
• Algoritmos genéticos

63
Como programar una RNN en Python
Se puede usar anaconda-Jupyter o bien..
Colaboratory

¿Qué es Colaboratory? Colaboratory, también llamado Colab, es un


producto de Google Research. Colab permite que todos puedan escribir y
ejecutar código arbitrario de Python en el navegador. Es ideal para aplicarlo
en proyectos de aprendizaje automático, análisis de datos y educación.
Más técnicamente, Colab es un servicio de notebook alojado de Jupyter
que no requiere configuración para usarlo y brinda acceso gratuito a
recursos computacionales, incluidas GPU.

Cómo usar Colab


¿Dónde se almacenan mis notebooks y cómo puedo compartirlos?Los
notebooks de Colab se almacenan en Google Drive, pero también se
pueden cargar desde GitHub. Los notebooks de Colab se pueden compartir
del mismo modo que las Hojas de cálculo o los Documentos de Google.

64
Como programar una RNN en Python
Regresión Básica: Predecir eficiencia de gasolina
En un problema de regresión, buscamos predecir la salida de un valor
continuo como la probabilidad de un precio.

Este ejemplo usa el API de tensorflow tf.keras y está publicado en


https://www.tensorflow.org/tutorials/keras/regression
https://upscfever.com/upsc-fever/en/programming/tensorflow/6.html

Este ejemplo usa un set de datos de vehículos y construye un modelo


para predecir la eficiencia de vehículos entre 1970 y 1980. Para hacer
esto se provee al modelo con datos de muchos automóviles de ese
periodo. Datos en https://archive.ics.uci.edu/ml/datasets/auto+mpg

Estos datos de entrenamiento incluyen atributos como:


Cilindros, desplazamiento, potencia y peso.

Se debe pronosticar el mpg que es millas por galón.

65
Como programar una RNN en Python
Regresión Básica: Predecir eficiencia de gasolina

Datos entrenamiento y de testeo:


X0 Y0
Cilindros, desplazamiento, potencia y peso. Mpg
2, 23, 4, 2000 23
4, 12, 2, 2500 20
…..

Datos de validación:
X1 Y1
Cilindros, desplazamiento, potencia y peso. Mpg
1, 27, 4, 2200 ??
5, 25, 2, 2100 ??
…..

Con la RNN entrenada, se estimará Y1


Para ello se entrena una RNN minimizando el error cuadrático medio
para los datos de entrenamiento. 66
Como programar una RNN en Python
Regresión Básica: Predecir eficiencia de gasolina
#Carga Librerias
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns

# Make numpy printouts easier to read.


np.set_printoptions(precision=3, suppress=True)

import tensorflow as tf

from tensorflow import keras


from tensorflow.keras import layers
from tensorflow.keras.layers.experimental import preprocessing

print(tf.__version__)

67
Como programar una RNN en Python
Regresión Básica: Predecir eficiencia de gasolina
#Carga datos, los analiza y repara
url = 'http://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data'
column_names = ['MPG', 'Cylinders', 'Displacement', 'Horsepower', 'Weight',
'Acceleration', 'Model Year', 'Origin']

raw_dataset = pd.read_csv(url, names=column_names,


na_values='?', comment='\t',
sep=' ', skipinitialspace=True)

#Hace una copia de los datos


dataset = raw_dataset.copy()
dataset.tail()

#Elimina datos con valore nulos.


dataset.isna().sum()
dataset = dataset.dropna()

#Cambia el campo origin, que es discreto por 3 campos numericos


dataset['Origin'] = dataset['Origin'].map({1: 'USA', 2: 'Europe', 3: 'Japan'})
dataset = pd.get_dummies(dataset, prefix='', prefix_sep='')
dataset.tail() 68
Como programar una RNN en Python
Regresión Básica: Predecir eficiencia de gasolina
#separa en datos en datos de entrenamiento y de testeo (ojo en realidad es de
validación, con estos datos se verá que tan buen predictor es la red)
train_dataset = dataset.sample(frac=0.8, random_state=0)
test_dataset = dataset.drop(train_dataset.index)

#Separa la variable que se va a predecir


train_features = train_dataset.copy()
test_features = test_dataset.copy()

train_labels = train_features.pop('MPG')
test_labels = test_features.pop('MPG')

print(train_features)

#Crea una estructura que permite normalizar los datos


normalizer = preprocessing.Normalization()
normalizer.adapt(np.array(train_features))

69
Como programar una RNN en Python
Regresión Básica: Predecir eficiencia de gasolina
#Define una red neuronal de 2 capas, dos de ellas son capas intermedias de 64
neuronas y una capa de salida de una neurona, con función de activación en cada
neurona RELU, menos la ultima que es sigmoide por defecto.
def build_and_compile_model(norm):
model = keras.Sequential([
norm,
layers.Dense(64, activation='relu'),
layers.Dense(64, activation='relu'),
layers.Dense(1)
])

model.compile(loss='mean_absolute_error',
optimizer=tf.keras.optimizers.Adam(0.001))
return model

dnn_model = build_and_compile_model(normalizer)
dnn_model.summary()

70
Como programar una RNN en Python
Regresión Básica: Predecir eficiencia de gasolina
#Ejecuta la red neuronal, dividiendo los datos de entrenamiento en un 80% de
entrenamiento y un 20% para validación del entrenamiento. Las iteraciones o
épocas para entrenar la red es de 100.
%%time
history = dnn_model.fit(
train_features, train_labels,
validation_split=0.2,
verbose=0, epochs=100)

#Grafica el resultado del proceso de entrenamiento.


def plot_loss(history):
plt.plot(history.history['loss'], label='loss')
plt.plot(history.history['val_loss'], label='val_loss')
plt.ylim([0, 10])
plt.xlabel('Epoch')
plt.ylabel('Error [MPG]')
plt.legend()
plt.grid(True)

plot_loss(history)
71
Como programar una RNN en Python
Regresión Básica: Predecir eficiencia de gasolina
#Presenta el error cuadrático de la red, que es la suma de los errores entre los
datos reales versus los esperados, en los datos de entrenamiento.
test_results = {}
test_results['dnn_model'] = dnn_model.evaluate(test_features, test_labels,
verbose=0)
print( test_results )

# Calcula el mpg de los datos de testeo. Usando la red ya entrenada.


test_predictions = dnn_model.predict(test_features).flatten()

a = plt.axes(aspect='equal')
plt.scatter(test_labels, test_predictions)
plt.xlabel('True Values [MPG]')
plt.ylabel('Predictions [MPG]')
lims = [0, 50]
plt.xlim(lims)
plt.ylim(lims)
_ = plt.plot(lims, lims)

#Lista los mpg para los datos de testeo.


print(test_predictions) 72
Otro ejemplo con RNN
Programemos una red de 13 nodos en la capa oculta y 1 nodo en capa
de salida, para datos de housing.csv (datos de casas), usando librería
Keras, de tal manera de estimar el valor de arriendo.
Utilizaremos validación cruzada y Python.
Otra Librería de Machine
Learning de propósito
import numpy as np
general
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.preprocessing import StandardScaler Librería especializada en
from keras.datasets import boston_housing redes neuronales
from keras.models import Sequential profundas
from keras.layers import Dense

# load dataset
(x_train, y_train), (x_test, y_test) = boston_housing.load_data()
print(x_train.shape)
print(x_test.shape)
print(y_train.shape)
print(y_test.shape)
#OTRA FORMA DE CARGAR LOS DATOS
# load dataset
dataframe = pd.read_csv(r"https://raw.githubusercontent.com/maurosepulveda1/investigacion/master/housing.csv",
delim_whitespace=True, header=None)
dataset = dataframe.values
# split into input (X) and output (Y) variables
X = dataset[:,0:13]
Y = dataset[:,13]
73
Regresión múltiple con Redes
Neuronales Feedforward
Continuación del ejemplo 2.

# escalar los datos para que tengan media = 0 y desviacion estandar = 1


scaler = StandardScaler().fit(x_train)
x_train = scaler.transform(x_train)
x_test = scaler.transform(x_test)

#Define la arquitectura de la red


model = Sequential()
model.add(Dense(64, activation='relu', input_shape=x_train.shape[1:]))
model.add(Dense(64, activation='relu'))
model.add(Dense(1))

model.compile(optimizer = 'adam', loss = 'mse')


model.summary()

# Entrena la red
history = model.fit(x_train, y_train, epochs=100, batch_size=32,
validation_data=(x_test,y_test), verbose=2)

74
Regresión múltiple con Redes
Neuronales Feedforward
Continuación del ejemplo 2.

# Mide el error para los datos de testeo.


test_loss = model.evaluate(x_test, y_test, verbose=2)
print('Test loss:', test_loss)

#Grafica datos de entrenamiento versus testeo.


plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.grid()
plt.xlabel('Epocas')
plt.ylabel('MSE')
plt.legend(['train', 'test'])
plt.show()

#Revisemos las predicciones


predicciones = model.predict(x_test)
df_y_test = pd.DataFrame(y_test, columns=['y_test'])
df_pred = pd.DataFrame(predicciones, columns=['predicciones'])
comparar = pd.concat([df_y_test, df_pred], axis=1)
comparar
75
Trabajo de Laboratorio

• Realice el trabajo en grupos de 2 estudiantes.


• Modifique la red neuronal del ejemplo 2 anterior
aumentando el número de niveles. Que pasa?
• Modifique la red neuronal del ejemplo 2 anterior
aumentando el número de neuronas en la capa
intermedia. Que pasa?
• Uno de los 2 estudiantes debe enviar los resultados
del testeo de la red al correo del profesor
sepulveda.mauri@gmail.com, indicando en el
asunto USS:IA:LAB10: Juan Perez y Ana Perez

76

También podría gustarte