SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
Intro a ANNs c/Keras
Rodolfo Ferro Pérez
GitHub Campus Expert @ Future Lab
@FerroRodolfo
Objetivos:
1. Entender bases de redes neuronales
2. Conocer Keras, framework para ANNs
3. Desarrollo de un modelo de clasificación
4. Mostrar servicio web que utiliza una ANN
¿A qué me refiero por
servicio web?
https://kerasmnist.herokuapp.com
Parte 2: Creando un servicio web
para deployment de ANNs
4. Preprocesamiento
5. Web service
6. API maybe?
Parte 1: Intro a Keras con un ejemplo
clásico usando cloud tools
1. Intro a ANNs
2. Intro a Keras
3. Crear modelo de clasificación
Contenido:
WTF are ANNs?
(WTF stands for: we, the family. So no, we are not ANNs.)
ANN = Artificial Neural Network.
ANNs son modelos computacionales bio-inspirados por el sistema nervioso
de los seres vivos. Las ANNs pueden ser definidas como un conjunto de
unidades de procesamiento (neuronas artificiales), interconectadas por
matrices de pesos sinápticos (sinapsis artificiales), que pueden ser
implementadas por vectores y matrices de pesos sinápticos (da Silva, Spa ,
Flauzino, Liboni, & dos Reis Alves, 2017).
¿Bio-inspirado?
Fuente: https://twitter.com/fchollet/status/962144774802227205
Una ANN puede ser dividida en tres partes llamadas capas, que son conocidas como:
1. Input layer (capa de entrada)
Esta capa recibe información, la cual puede ser señales, características,
imágenes crudas o medidas del entorno. Estos inputs usualmente son
normalizados. Esta normalización tiene como resultado mejores resultados de
precisión numérica en las operaciones realizadas por la red.
Estructura
Una ANN puede ser dividida en tres partes llamadas capas, que son conocidas como:
2. Hidden layers (capas ocultas)
Estas capas están compuestas por neuronas que responden extrayendo
patrones asociados con el proceso o sistema analizado. Estas capas realizan la
mayoría delprocesamiento interno de una ANN.
Estructura
Una ANN puede ser dividida en tres partes llamadas capas, que son conocidas como:
3. Output layer (capa de salida)
Esta capa compuesta también de neuronas es la responsable de producir y
presentar las salidas finales de la red, que resultan del procesamiento realizado
por las capas previas.
Estructura
Capas, como las cebollas:
Fuente: “DEEP NEURAL NETWORKS: A GETTING STARTED TUTORIAL, PART #1”, Sergey Golubev, 2014.
Capas, como las cebollas:
Fuente: “ Going Deeper with Convolutions”, Szegedy et al., 2014.
¿Voy o no voy al FLISoL?
GitHub Gist: https://gist.github.com/RodolfoFerro/46dc7ba3dded4cd6a3a9d58e1284557a
import numpy as np
class PerceptronFLISoL():
def __init__(self, entradas, pesos):
"""Constructor de la clase."""
self.n = len(entradas)
self.entradas = np.array(entradas)
self.pesos = np.array(pesos)
def voy_no_voy(self, umbral):
"""Calcula el output deseado."""
si_no = (self.entradas @ self.pesos) >= umbral
if si_no: return "Sí voy."
else: return "No voy."
¿Cómo se programa?
GitHub Gist: https://gist.github.com/RodolfoFerro/46dc7ba3dded4cd6a3a9d58e1284557a
import numpy as np
class SigmoidNeuron():
def __init__(self, n):
np.random.seed(123)
self.synaptic_weights = 2 * np.random.random((n, 1)) - 1
def __sigmoid(self, x):
return 1 / (1 + np.exp(-x))
def __sigmoid_derivative(self, x):
return x * (1 - x)
def train(self, training_inputs, training_output, iterations):
for iteration in range(iterations):
output = self.predict(training_inputs)
error = training_output.reshape((len(training_inputs), 1)) - output
adjustment = np.dot(training_inputs.T, error *
self.__sigmoid_derivative(output))
self.synaptic_weights += adjustment
def predict(self, inputs):
return self.__sigmoid(np.dot(inputs, self.synaptic_weights))
François Chollet
Fuente: https://twitter.com/fchollet/status/962144774802227205
Keras: The Python Deep Learning library
You have just found Keras.
Keras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, or
Theano. It was developed with a focus on enabling fast experimentation. Being able to go from idea to result with the
least possible delay is key to doing good research.
Source: https://keras.io/
Estructura de Keras:
Keras sobre Tensorflow,
Theano y CNTK:
Guiding principles
● User friendliness. Keras is an API designed for human beings, not machines. It puts user experience front and center.
Keras follows best practices for reducing cognitive load: it offers consistent & simple APIs, it minimizes the number of user
actions required for common use cases, and it provides clear and actionable feedback upon user error.
● Modularity. A model is understood as a sequence or a graph of standalone, fully-configurable modules that can be plugged
together with as little restrictions as possible. In particular, neural layers, cost functions, optimizers, initialization schemes,
activation functions, regularization schemes are all standalone modules that you can combine to create new models.
● Easy extensibility. New modules are simple to add (as new classes and functions), and existing modules provide ample
examples. To be able to easily create new modules allows for total expressiveness, making Keras suitable for advanced
research.
● Work with Python. No separate models configuration files in a declarative format. Models are described in Python
code, which is compact, easier to debug, and allows for ease of extensibility.
Source: https://keras.io/
La estructura principal de Keras es un modelo, que es una manera en la que
organizamos las capas. El modelo más sencillo es el modelo Sequential, una
pila lineal de capas. Para modelos más elaborados, usamos Model, con la
programacion funcional del API de Keras.
# Import the Sequential model:
from keras.models import Sequential
# Create a new Sequential model:
model = Sequential()
Keras en 1 minuto:
Keras en 1 minuto:
Añadir capas es tan sencillo como utilizar .add().
# Import the Dense layer class for FC:
from keras.layers import Dense
# Add FC layers:
model.add(Dense(units=64, activation='relu', input_dim=100))
model.add(Dense(units=10, activation='softmax'))
Keras en 1 minuto:
Una vez se tenga el modelo, configuramos su proceso de aprendizaje utilizando
.compile().
# Compile model:
model.compile(loss='categorical_crossentropy',
optimizer='sgd',
metrics=['accuracy'])
Keras en 1 minuto:
Una vez compilado el modelo, puede procederse a iterar en los lotes de
entrenamiento usando .fit().
# Train the model:
# x_train and y_train are Numpy arrays
# --just like in the Scikit-Learn API.
model.fit(x_train, y_train, epochs=5, batch_size=32)
Keras en 1 minuto:
Finalmente se puede evaluar el desempeño, o generar predicciones de nuevos
datos:
# Evaluate the model:
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)
# Make predictions:
classes = model.predict(x_test, batch_size=128)
Layers:
● Core:
○ Dense
○ Activation
○ Dropout
○ Flatten
○ Input
○ Reshape
○ Permute
○ …
● Convolutional:
○ Conv1D
○ Conv2D
○ Conv3D
○ …
● Pooling:
○ MaxPooling1D
○ MaxPooling2D
○ MaxPooling3D
○ AveragePooling1D
○ AveragePooling2D
○ AveragePooling3D
○ GlobalMaxPooling1D
○ …
● Locally-connected
● Recurrent
● Embedding
● Merge
● Normalization
● ...
Preprocessing:
● Sequence preprocessing
● Image preprocessing
● Text preprocessing
…
Metrics, Losses, Activations, Optimizers, Initializers,
Regularizers, Datasets...
¿Y si quisiera hacer un módulo inception?
Fuente: “Going Deeper with Convolutions”, Szegedy et al., 2014.
Keras Functional API:
La API funcional de Keras es el camino a seguir para definir modelos complejos,
como modelos de múltiples salidas, gráficos acíclicos dirigidos o modelos con
capas compartidas.
Keras Functional API:
from keras.layers import Conv2D, MaxPooling2D, Input
input_img = Input(shape=(256, 256, 3))
tower_1 = Conv2D(64, (1, 1), padding='same', activation='relu')(input_img)
tower_1 = Conv2D(64, (3, 3), padding='same', activation='relu')(tower_1)
tower_2 = Conv2D(64, (1, 1), padding='same', activation='relu')(input_img)
tower_2 = Conv2D(64, (5, 5), padding='same', activation='relu')(tower_2)
tower_3 = MaxPooling2D((3, 3), strides=(1, 1), padding='same')(input_img)
tower_3 = Conv2D(64, (1, 1), padding='same', activation='relu')(tower_3)
output = keras.layers.concatenate([tower_1, tower_2, tower_3], axis=1)
Let’s try Keras, maybe?
But before...
https://github.com/RodolfoFerro/FLISoL18
Fork it, clone it, cut it, paste it, copy it, re-write it…
– Daft Punk (ft. Rodolfo Ferro)
De nuevo, sobre el
servicio web:
https://kerasmnist.herokuapp.com
Diagrama de flujo de datos
A nombre del Future Lab:
¡Gracias!
@FerroRodolfo
Contacto: ferro@cimat.mx
Repositorio: http://github.com/RodolfoFerro/FLISoL18
Azure Notebooks: https://notebooks.azure.com/rodolfoferro/libraries/FLISoL18

Más contenido relacionado

La actualidad más candente

redes neuronales
redes neuronalesredes neuronales
redes neuronalesSara Silva
 
Reconocimiento de caracteres atravez de redes neuronales
Reconocimiento de caracteres atravez de redes neuronalesReconocimiento de caracteres atravez de redes neuronales
Reconocimiento de caracteres atravez de redes neuronalesluisfe
 
Redes neuronales maria jose paredes
Redes neuronales maria jose paredesRedes neuronales maria jose paredes
Redes neuronales maria jose paredesmajito269
 
Diseño y Entrenamiento de Redes Neuronales Artificiales
Diseño y Entrenamiento de Redes Neuronales ArtificialesDiseño y Entrenamiento de Redes Neuronales Artificiales
Diseño y Entrenamiento de Redes Neuronales ArtificialesESCOM
 
Problema de Aplicación sobre la fertilidad en los hombres aplicando las Funci...
Problema de Aplicación sobre la fertilidad en los hombres aplicando las Funci...Problema de Aplicación sobre la fertilidad en los hombres aplicando las Funci...
Problema de Aplicación sobre la fertilidad en los hombres aplicando las Funci...Henry Quezada
 
Redes Neuronales
Redes NeuronalesRedes Neuronales
Redes NeuronalesDavid852
 
Construccion , Diseño y Entrenamiento de Redes Neuronales Artificiales
Construccion , Diseño y Entrenamiento de Redes Neuronales ArtificialesConstruccion , Diseño y Entrenamiento de Redes Neuronales Artificiales
Construccion , Diseño y Entrenamiento de Redes Neuronales ArtificialesESCOM
 

La actualidad más candente (9)

redes neuronales
redes neuronalesredes neuronales
redes neuronales
 
Reconocimiento de caracteres atravez de redes neuronales
Reconocimiento de caracteres atravez de redes neuronalesReconocimiento de caracteres atravez de redes neuronales
Reconocimiento de caracteres atravez de redes neuronales
 
Multitarea
MultitareaMultitarea
Multitarea
 
Redes neuronales maria jose paredes
Redes neuronales maria jose paredesRedes neuronales maria jose paredes
Redes neuronales maria jose paredes
 
Diseño y Entrenamiento de Redes Neuronales Artificiales
Diseño y Entrenamiento de Redes Neuronales ArtificialesDiseño y Entrenamiento de Redes Neuronales Artificiales
Diseño y Entrenamiento de Redes Neuronales Artificiales
 
Problema de Aplicación sobre la fertilidad en los hombres aplicando las Funci...
Problema de Aplicación sobre la fertilidad en los hombres aplicando las Funci...Problema de Aplicación sobre la fertilidad en los hombres aplicando las Funci...
Problema de Aplicación sobre la fertilidad en los hombres aplicando las Funci...
 
Redes Neuronales
Redes NeuronalesRedes Neuronales
Redes Neuronales
 
Multitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplosMultitarea e hilos en java con ejemplos
Multitarea e hilos en java con ejemplos
 
Construccion , Diseño y Entrenamiento de Redes Neuronales Artificiales
Construccion , Diseño y Entrenamiento de Redes Neuronales ArtificialesConstruccion , Diseño y Entrenamiento de Redes Neuronales Artificiales
Construccion , Diseño y Entrenamiento de Redes Neuronales Artificiales
 

Similar a Intro a ANNs c/Keras

KERAS Y TENSORFLOW
KERAS Y TENSORFLOWKERAS Y TENSORFLOW
KERAS Y TENSORFLOWjose vasante
 
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptxGabriela Soto
 
Lec11 metodos
Lec11 metodosLec11 metodos
Lec11 metodoshtmrk
 
Programacion Orientada a Objetos IE
Programacion Orientada a Objetos IEProgramacion Orientada a Objetos IE
Programacion Orientada a Objetos IEKaren Olan
 
Implementación de un módulo para el entrenamiento y evaluación de redes neuro...
Implementación de un módulo para el entrenamiento y evaluación de redes neuro...Implementación de un módulo para el entrenamiento y evaluación de redes neuro...
Implementación de un módulo para el entrenamiento y evaluación de redes neuro...Adrián Palacios Corella
 
CIITEC Fundamentos de Deep Learning.pptx
CIITEC  Fundamentos de Deep Learning.pptxCIITEC  Fundamentos de Deep Learning.pptx
CIITEC Fundamentos de Deep Learning.pptxicebeam7
 
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)Oscar V
 
Caracteristicas de C Sharp
Caracteristicas de C SharpCaracteristicas de C Sharp
Caracteristicas de C SharpEdgardo Martinez
 
Deep Learning + R by Gabriel Valverde
Deep Learning + R by Gabriel ValverdeDeep Learning + R by Gabriel Valverde
Deep Learning + R by Gabriel ValverdeVictoria López
 
Webprendedor 2009 Escalabilidad
Webprendedor 2009 EscalabilidadWebprendedor 2009 Escalabilidad
Webprendedor 2009 Escalabilidadedavism
 
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptxFabianAndresNuezPinz
 

Similar a Intro a ANNs c/Keras (20)

KERAS Y TENSORFLOW
KERAS Y TENSORFLOWKERAS Y TENSORFLOW
KERAS Y TENSORFLOW
 
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
 
Lec11 metodos
Lec11 metodosLec11 metodos
Lec11 metodos
 
Programacion Orientada a Objetos IE
Programacion Orientada a Objetos IEProgramacion Orientada a Objetos IE
Programacion Orientada a Objetos IE
 
Unidad II_1.pptx
Unidad II_1.pptxUnidad II_1.pptx
Unidad II_1.pptx
 
Unidad i poo avanzada
Unidad i   poo avanzadaUnidad i   poo avanzada
Unidad i poo avanzada
 
Analisis Proyecto TETRAD V
 Analisis Proyecto TETRAD V Analisis Proyecto TETRAD V
Analisis Proyecto TETRAD V
 
Implementación de un módulo para el entrenamiento y evaluación de redes neuro...
Implementación de un módulo para el entrenamiento y evaluación de redes neuro...Implementación de un módulo para el entrenamiento y evaluación de redes neuro...
Implementación de un módulo para el entrenamiento y evaluación de redes neuro...
 
thy
thythy
thy
 
Analisis Proyecto TETRAD V
 Analisis Proyecto TETRAD V Analisis Proyecto TETRAD V
Analisis Proyecto TETRAD V
 
CIITEC Fundamentos de Deep Learning.pptx
CIITEC  Fundamentos de Deep Learning.pptxCIITEC  Fundamentos de Deep Learning.pptx
CIITEC Fundamentos de Deep Learning.pptx
 
Deep Learning Notes
Deep Learning NotesDeep Learning Notes
Deep Learning Notes
 
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
 
Caracteristicas de C Sharp
Caracteristicas de C SharpCaracteristicas de C Sharp
Caracteristicas de C Sharp
 
Deep Learning + R by Gabriel Valverde
Deep Learning + R by Gabriel ValverdeDeep Learning + R by Gabriel Valverde
Deep Learning + R by Gabriel Valverde
 
Informatica
InformaticaInformatica
Informatica
 
Tap04 poo
Tap04 pooTap04 poo
Tap04 poo
 
Webprendedor 2009 Escalabilidad
Webprendedor 2009 EscalabilidadWebprendedor 2009 Escalabilidad
Webprendedor 2009 Escalabilidad
 
Artículo - Simulador NS (Network Simulator)
Artículo - Simulador NS (Network Simulator)Artículo - Simulador NS (Network Simulator)
Artículo - Simulador NS (Network Simulator)
 
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx
_Concepto de interfaz_interfaz_interfaz_interfaz_interfaz_.pptx
 

Último

R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 

Último (20)

R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 

Intro a ANNs c/Keras

  • 1. Intro a ANNs c/Keras Rodolfo Ferro Pérez GitHub Campus Expert @ Future Lab
  • 3. Objetivos: 1. Entender bases de redes neuronales 2. Conocer Keras, framework para ANNs 3. Desarrollo de un modelo de clasificación 4. Mostrar servicio web que utiliza una ANN
  • 4. ¿A qué me refiero por servicio web? https://kerasmnist.herokuapp.com
  • 5. Parte 2: Creando un servicio web para deployment de ANNs 4. Preprocesamiento 5. Web service 6. API maybe? Parte 1: Intro a Keras con un ejemplo clásico usando cloud tools 1. Intro a ANNs 2. Intro a Keras 3. Crear modelo de clasificación Contenido:
  • 6. WTF are ANNs? (WTF stands for: we, the family. So no, we are not ANNs.) ANN = Artificial Neural Network. ANNs son modelos computacionales bio-inspirados por el sistema nervioso de los seres vivos. Las ANNs pueden ser definidas como un conjunto de unidades de procesamiento (neuronas artificiales), interconectadas por matrices de pesos sinápticos (sinapsis artificiales), que pueden ser implementadas por vectores y matrices de pesos sinápticos (da Silva, Spa , Flauzino, Liboni, & dos Reis Alves, 2017).
  • 8. Una ANN puede ser dividida en tres partes llamadas capas, que son conocidas como: 1. Input layer (capa de entrada) Esta capa recibe información, la cual puede ser señales, características, imágenes crudas o medidas del entorno. Estos inputs usualmente son normalizados. Esta normalización tiene como resultado mejores resultados de precisión numérica en las operaciones realizadas por la red. Estructura
  • 9. Una ANN puede ser dividida en tres partes llamadas capas, que son conocidas como: 2. Hidden layers (capas ocultas) Estas capas están compuestas por neuronas que responden extrayendo patrones asociados con el proceso o sistema analizado. Estas capas realizan la mayoría delprocesamiento interno de una ANN. Estructura
  • 10. Una ANN puede ser dividida en tres partes llamadas capas, que son conocidas como: 3. Output layer (capa de salida) Esta capa compuesta también de neuronas es la responsable de producir y presentar las salidas finales de la red, que resultan del procesamiento realizado por las capas previas. Estructura
  • 11. Capas, como las cebollas: Fuente: “DEEP NEURAL NETWORKS: A GETTING STARTED TUTORIAL, PART #1”, Sergey Golubev, 2014.
  • 12. Capas, como las cebollas: Fuente: “ Going Deeper with Convolutions”, Szegedy et al., 2014.
  • 13. ¿Voy o no voy al FLISoL?
  • 14. GitHub Gist: https://gist.github.com/RodolfoFerro/46dc7ba3dded4cd6a3a9d58e1284557a import numpy as np class PerceptronFLISoL(): def __init__(self, entradas, pesos): """Constructor de la clase.""" self.n = len(entradas) self.entradas = np.array(entradas) self.pesos = np.array(pesos) def voy_no_voy(self, umbral): """Calcula el output deseado.""" si_no = (self.entradas @ self.pesos) >= umbral if si_no: return "Sí voy." else: return "No voy." ¿Cómo se programa?
  • 15. GitHub Gist: https://gist.github.com/RodolfoFerro/46dc7ba3dded4cd6a3a9d58e1284557a import numpy as np class SigmoidNeuron(): def __init__(self, n): np.random.seed(123) self.synaptic_weights = 2 * np.random.random((n, 1)) - 1 def __sigmoid(self, x): return 1 / (1 + np.exp(-x)) def __sigmoid_derivative(self, x): return x * (1 - x) def train(self, training_inputs, training_output, iterations): for iteration in range(iterations): output = self.predict(training_inputs) error = training_output.reshape((len(training_inputs), 1)) - output adjustment = np.dot(training_inputs.T, error * self.__sigmoid_derivative(output)) self.synaptic_weights += adjustment def predict(self, inputs): return self.__sigmoid(np.dot(inputs, self.synaptic_weights))
  • 16.
  • 17.
  • 20. Keras: The Python Deep Learning library You have just found Keras. Keras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, or Theano. It was developed with a focus on enabling fast experimentation. Being able to go from idea to result with the least possible delay is key to doing good research. Source: https://keras.io/
  • 21.
  • 22. Estructura de Keras: Keras sobre Tensorflow, Theano y CNTK:
  • 23. Guiding principles ● User friendliness. Keras is an API designed for human beings, not machines. It puts user experience front and center. Keras follows best practices for reducing cognitive load: it offers consistent & simple APIs, it minimizes the number of user actions required for common use cases, and it provides clear and actionable feedback upon user error. ● Modularity. A model is understood as a sequence or a graph of standalone, fully-configurable modules that can be plugged together with as little restrictions as possible. In particular, neural layers, cost functions, optimizers, initialization schemes, activation functions, regularization schemes are all standalone modules that you can combine to create new models. ● Easy extensibility. New modules are simple to add (as new classes and functions), and existing modules provide ample examples. To be able to easily create new modules allows for total expressiveness, making Keras suitable for advanced research. ● Work with Python. No separate models configuration files in a declarative format. Models are described in Python code, which is compact, easier to debug, and allows for ease of extensibility. Source: https://keras.io/
  • 24. La estructura principal de Keras es un modelo, que es una manera en la que organizamos las capas. El modelo más sencillo es el modelo Sequential, una pila lineal de capas. Para modelos más elaborados, usamos Model, con la programacion funcional del API de Keras. # Import the Sequential model: from keras.models import Sequential # Create a new Sequential model: model = Sequential() Keras en 1 minuto:
  • 25. Keras en 1 minuto: Añadir capas es tan sencillo como utilizar .add(). # Import the Dense layer class for FC: from keras.layers import Dense # Add FC layers: model.add(Dense(units=64, activation='relu', input_dim=100)) model.add(Dense(units=10, activation='softmax'))
  • 26. Keras en 1 minuto: Una vez se tenga el modelo, configuramos su proceso de aprendizaje utilizando .compile(). # Compile model: model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
  • 27. Keras en 1 minuto: Una vez compilado el modelo, puede procederse a iterar en los lotes de entrenamiento usando .fit(). # Train the model: # x_train and y_train are Numpy arrays # --just like in the Scikit-Learn API. model.fit(x_train, y_train, epochs=5, batch_size=32)
  • 28. Keras en 1 minuto: Finalmente se puede evaluar el desempeño, o generar predicciones de nuevos datos: # Evaluate the model: loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128) # Make predictions: classes = model.predict(x_test, batch_size=128)
  • 29. Layers: ● Core: ○ Dense ○ Activation ○ Dropout ○ Flatten ○ Input ○ Reshape ○ Permute ○ … ● Convolutional: ○ Conv1D ○ Conv2D ○ Conv3D ○ … ● Pooling: ○ MaxPooling1D ○ MaxPooling2D ○ MaxPooling3D ○ AveragePooling1D ○ AveragePooling2D ○ AveragePooling3D ○ GlobalMaxPooling1D ○ … ● Locally-connected ● Recurrent ● Embedding ● Merge ● Normalization ● ...
  • 30. Preprocessing: ● Sequence preprocessing ● Image preprocessing ● Text preprocessing … Metrics, Losses, Activations, Optimizers, Initializers, Regularizers, Datasets...
  • 31. ¿Y si quisiera hacer un módulo inception? Fuente: “Going Deeper with Convolutions”, Szegedy et al., 2014.
  • 32. Keras Functional API: La API funcional de Keras es el camino a seguir para definir modelos complejos, como modelos de múltiples salidas, gráficos acíclicos dirigidos o modelos con capas compartidas.
  • 33. Keras Functional API: from keras.layers import Conv2D, MaxPooling2D, Input input_img = Input(shape=(256, 256, 3)) tower_1 = Conv2D(64, (1, 1), padding='same', activation='relu')(input_img) tower_1 = Conv2D(64, (3, 3), padding='same', activation='relu')(tower_1) tower_2 = Conv2D(64, (1, 1), padding='same', activation='relu')(input_img) tower_2 = Conv2D(64, (5, 5), padding='same', activation='relu')(tower_2) tower_3 = MaxPooling2D((3, 3), strides=(1, 1), padding='same')(input_img) tower_3 = Conv2D(64, (1, 1), padding='same', activation='relu')(tower_3) output = keras.layers.concatenate([tower_1, tower_2, tower_3], axis=1)
  • 34.
  • 35. Let’s try Keras, maybe? But before...
  • 36.
  • 37. https://github.com/RodolfoFerro/FLISoL18 Fork it, clone it, cut it, paste it, copy it, re-write it… – Daft Punk (ft. Rodolfo Ferro)
  • 38. De nuevo, sobre el servicio web: https://kerasmnist.herokuapp.com
  • 39. Diagrama de flujo de datos
  • 40. A nombre del Future Lab: ¡Gracias! @FerroRodolfo Contacto: ferro@cimat.mx Repositorio: http://github.com/RodolfoFerro/FLISoL18 Azure Notebooks: https://notebooks.azure.com/rodolfoferro/libraries/FLISoL18