Solid Day - Deep learning
-
Upload
software-guru -
Category
Data & Analytics
-
view
81 -
download
1
Transcript of Solid Day - Deep learning
Yaerespartedelaevolución
SolidDay
DeepLearning:Introducción,usoseimplementacióncon
TensorFlowEnriqueDanielZentenoJiménez
https://mx.linkedin.com/in/ezentenoj#sgnext
IntroducciónalAprendizajeProfundo
¿Qué se puede hacer con Visión por Computadora?
● Medir: saber la distancia que hay entre dos pixeles en la imagen o entre la cámara y el objeto.
o Visión estereoscópica: basado en dos cámaras. Simula la visión humana.
o Triangulación: utiliza una cámara y un emisor de luz. El mayor ejemplo es el Kinect de Microsoft.
● Segmentar: conocer el límite físico de un objeto.
● Clasificar: darle un nombre a un objeto.
¿Cómo se clasifica un objeto en una imagen?
Por medio de dos pasos: la extracción de las características y el entrenamiento de un clasificador.
● Búsqueda de características:
o Valor del pixel
o Filtros:
§ Pasa altas, bajas, bandas.
§ Convoluciones.
o Extracción de características:
§ Histogram of Oriented Gradients.
§ Scale-invariant feature transform.
§ Haralick texture features.
Filtros: convolución (detector de contornos)
Kernel
Generación de características: histograma orientado de gradientes
Clasificación de características
● Support Vector Machines
● Decision trees
● Random Forest
● Naive Bayes
● Multi-layer Perceptron
Aprendizaje profundo
La obtención de características también es por medio de un proceso iterativo de aprendizaje.
Extractor de características entrenable
Extractor de características entrenable
Extractor de características entrenable
Clasificador
Extractor de características entrenable
Contornos Texturas Objetos
*Ejemplo de una red neuronal convolucional entrenada con Imagenet
Características conectadas en imágenes
Pixel Contorno Textura Patrón Parte Objeto
Técnicadeaprendizajeprofundoparalaclasificacióndetexto
¿Qué características necesitamos construir?
Letra Palabra Frases Oración Enunciado Historia
Tratar texto como imagen (Zhang y LeCun, 2015)
El texto es transformado en una imagen binaria.
Dimensiones: (alfabeto x longitud máxima)
Juniperus =
Red neuronal convolucional
Características:
Profundidad de 9 capas
6 capas de filtros de convolución
3 capas de Multi-layer perceptron.
¿Cómo ha sido probado?
1. DBpedia
a. 14 clases.
b. 560,000 documentos para entrenar.
c. 70,000 para probar.
d. 98.40% de exactitud en el conjunto de prueba.
2. Amazon Review Sentiment Analysis
a. 5 clases (subjetividad en comentarios de productos)
b. 3,600,000 comentarios para entrenar.
c. 400,000 comentarios para probar.
d. 59.57% de exactitud en el conjunto de prueba.
3. SogouCA en Chino
a. 5 clases (notas de periódicos)
b. 90,000 documentos para entrenar.
c. 12,000 para probar.
d. 95.12% de exactitud en el conjunto de prueba.
EjemploprácticoenTensorflow
¿Qué es Tensorflow?
• Biblioteca de software libre para hacer computación numérica por medio de grafos.
• Los nodos representan las operaciones matemáticas; las conexiones, los datos.
• Fue originalmente desarrollado por ingenieros del proyecto Google Brain.
• Estadísticas de su repositorio en Github (https://github.com/tensorflow/tensorflow):
• +30k estrellas.
• +12k Forks.
• +300 contribuidores.
Implementacióndelaredpublicada enVeryDeepConvolutionalNetworksforNaturalLanguageProcessing,2016
Implementación usando tflearn
net= tflearn.input_data([None,7,1014,1])net= tf.pad(net,((0,0),(0,0),(1,1),(0,0)))net= tflearn.layers.conv_2d(net,64,[7,3],scope='conv1',padding='valid')for iin range(4):net= tflearn.layers.conv_2d(net,64,[1,3],scope='conv_64_{0}'.format(i),padding='SAME',activation='relu')net= tflearn.layers.normalization.batch_normalization(net)
net= tflearn.layers.conv.max_pool_2d(net,[1,3],strides=2)for iin range(4):net= tflearn.layers.conv_2d(net,128,[1,3],scope='conv_128_{0}'.format(i),padding='SAME',activation='relu')net= tflearn.layers.normalization.batch_normalization(net)
net= tflearn.layers.conv.max_pool_2d(net,[1,3],strides=2)for iin range(4):net= tflearn.layers.conv_2d(net,256,[1,3],scope='conv_256_{0}'.format(i),padding='SAME',activation='relu')net= tflearn.layers.normalization.batch_normalization(net)
net= tflearn.layers.conv.max_pool_2d(net,[1,3],strides=2)for iin range(4):net= tflearn.layers.conv_2d(net,512,[1,3],scope='conv_512_{0}'.format(i),padding='SAME',activation='relu')net= tflearn.layers.normalization.batch_normalization(net)
net= tflearn.layers.conv.max_pool_2d(net,[1,8],strides=16)net= tflearn.layers.core.flatten(net)
Implementación usando tflearn
for iin range(2):net= tflearn.layers.core.fully_connected(net,2048,activation='relu')
net= tflearn.layers.core.fully_connected(net,9,activation='softmax')sgd= tflearn.SGD(learning_rate=0.005)accuracy= tflearn.metrics.Accuracy()net= tflearn.regression(net,optimizer=sgd,metric=accuracy,loss='categorical_crossentropy',to_one_hot=True,n_classes=9)model= tflearn.DNN(net,checkpoint_path='message_tickets',tensorboard_verbose=2)model.fit(X_train,y_train,n_epoch=100,validation_set=(X_test,y_test),batch_size=128,snapshot_step=100,run_id='message_tickets',show_metric=True)
Training Step: 1769 | total loss: 1.11202| SGD | epoch: 030 | loss: 1.11202 - acc: 0.6327 -- iter: 3712/7611
Monitoreo de avance en Tensorboard
¿Preguntas?Contacto:[email protected]