Guia 12

1 Sistemas Expertos e Inteligencia Artificial / Guía XII Facultad: Ingeniería Escuela: Computación Asignatura: Sistema

Views 120 Downloads 0 File size 287KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

1

Sistemas Expertos e Inteligencia Artificial / Guía XII

Facultad: Ingeniería Escuela: Computación Asignatura: Sistemas Expertos e Inteligencia Artificial

Introducción a TensorFlow Objetivos Específicos • •

Comprender el concepto de TensorFlow. Crear modelos de aprendizaje automático en TensorFlow.

Material y Equipo • •

Guía Número 12. Computadora con Python.

Introducción Teórica TensorFlow es una herramienta de machine learning de código abierto para cálculo numérico, usando como forma de programación grafos de flujo de datos. Los nodos en el grafo representan operaciones matemáticas, mientras que las conexiones o links del grafo representan los conjuntos de datos multidimensionales. Con esta librería el usuario es capaz, entre otras operaciones, de construir y entrenar redes neuronales para detectar correlaciones y descifrar patrones, análogos al aprendizaje y razonamiento usados por los humanos. Actualmente se utiliza Tensorflow tanto en la investigación como para la producción de productos de Google, remplazando el rol de su predecesor de código cerrado, DistBelief. TensorFlow es el sistema de aprendizaje automático de segunda generación de Google Brain, liberado como software de código abierto el 9 de noviembre del 2015. Mientras la implementación de referencia se ejecuta en dispositivos aislados, TensorFlow puede correr en múltiple CPUs y GPUs (con extensiones opcionales de CUDA para informática de propósito general en unidades de procesamiento gráfico). TensorFlow está disponible en Linux de 64 bits, macOS, y plataformas móviles que incluyen Android e iOS.

Procedimiento A continuación, se muestran los pasos a seguir para utilizar TensorFlow. Instalación de TensorFlow. 1.

Ingresamos al sitio web https://www.anaconda.com/distribution/ y descargamos la versión de anaconda de

Python 3.7 para Windows. (en caso de que no tenga instalado anaconda). 2. Ejecutamos el archive descargado, teniendo el cuidado de marcar las dos opciones que aparecen en “Avanced Installation Options”, una vez hecho esto damos clic en instalar.

2

Sistemas Expertos e Inteligencia Artificial / Guía XII 3.

Ingrese a la consola de Windows (CMD).

4.

Ejecutamos el comando conda create –n SuCarnet tensorflow para crear un ambiente de trabajo. (Reemplace el texto SuCarnet con su numero de carnet”).

5.

Para verificar si el ambiente funciona correctamente, ejecutamos el comando actívate SuCarnet.

6.

Ejecute el comando conda install tensorflow, para descargar todas las librerías de Python.

7.

También necesitaremos las siguientes librerías: a.

conda install matplotlib

b. conda install numpy c.

conda install -c anaconda scikit-learn

Instalación Jupyter Notebook. 1.

Ingrese a Anaconda Navigator.

2.

Seleccione el ambiente de trabajo creado anteriormente en la opción Applications on.

3.

Instale y ejecute la aplicación Jupyter Notebook.

4.

Lo anterior abrirá una ventana en el navegador. A continuación, deberá crear un nuevo archivo de Python, para ello de clic en new y luego en Python 3.

3

Sistemas Expertos e Inteligencia Artificial / Guía XII

Ejemplo En este ejemplo se entrena un modelo de red neuronal para clasificación de ropa. Ejemplo tomado de

https://www.tensorflow.org/tutorials/keras/classification from __future__ import absolute_import, division, print_function, unicode_literals # Librerias TensorFlow y tf.keras import tensorflow as tf from tensorflow import keras # Librerias de ayuda para manejo de arreglos y gráficos import numpy as np import matplotlib.pyplot as plt print(tf.__version__) #Version de tensorflow # Se incluye un set de imanges MMIST para entrenar la red neuronal. fashion_mnist = keras.datasets.fashion_mnist (train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data() # Etiqueta de imágenes que se pueden encontrar class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot'] # Se verifica la cantidad de imágenes a utilizar, así como el tamaño de cada uno. train_images.shape len(train_labels) train_labels # Se verifica la cantidad de imágenes a utilizar en el set de pruebas, así como el tamaño de cada uno. test_images.shape len(test_labels) # Gráfico para verificar el set de entrenamiento, se íede verificar que el valor de los pixeles de la imagen están entre 0 y 255. plt.figure()

4

Sistemas Expertos e Inteligencia Artificial / Guía XII plt.imshow(train_images[0]) plt.colorbar() plt.grid(False) plt.show() # Se escala el rango de la gráfica a un rango entre 0 y 1, para ello se divide entre 255 train_images = train_images / 255.0 test_images = test_images / 255.0 # Para verificar el set de datos, se mostrarán las primeras 15 imágenes del set de entrenamiento. plt.figure(figsize=(10,10)) for i in range(15): plt.subplot(5,5,i+1) plt.xticks([]) plt.yticks([]) plt.grid(False) plt.imshow(train_images[i], cmap=plt.cm.binary) plt.xlabel(class_names[train_labels[i]]) plt.show() # Se construirá un modelo para hacer la red neuronal, para ello utlizaremos la librería de Keras model = keras.Sequential([ keras.layers.Flatten(input_shape=(28, 28)), keras.layers.Dense(128, activation='relu'), keras.layers.Dense(10, activation='softmax') ]) # Se procede a compilar el modelo. model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) # Se procese a entrenar el modelo con el set de entrenamiento, el número de veces que se repetirá este proceso, dependerá de la exactitud que quiere alcanzar de su modelo; para este caso este proceso se repite 10 veces (epochs=10), con lo cual se alcanza una exactitud del 88% model.fit(train_images, train_labels, epochs=10) # Se evalúa la exactitud test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2) print('\nExactitud:', test_acc) # Se procede a hacer predicciones predictions = model.predict(test_images) predictions[0] np.argmax(predictions[0]) # nos mostrara como resultado 9, el cual indica que la imagen “ankle boot” es el predecido.

5

Sistemas Expertos e Inteligencia Artificial / Guía XII # Funciones para graficar las imágenes a predecir def plot_image(i, predictions_array, true_label, img): predictions_array, true_label, img = predictions_array, true_label[i], img[i] plt.grid(False) plt.xticks([]) plt.yticks([]) plt.imshow(img, cmap=plt.cm.binary) predicted_label = np.argmax(predictions_array) if predicted_label == true_label: color = 'blue' else: color = 'red' plt.xlabel("{} {:2.0f}% ({})".format(class_names[predicted_label], 100*np.max(predictions_array), class_names[true_label]), color=color) def plot_value_array(i, predictions_array, true_label): predictions_array, true_label = predictions_array, true_label[i] plt.grid(False) plt.xticks(range(10)) plt.yticks([]) thisplot = plt.bar(range(10), predictions_array, color="#777777") plt.ylim([0, 1]) predicted_label = np.argmax(predictions_array) thisplot[predicted_label].set_color('red') thisplot[true_label].set_color('blue') # Analizando la imagen 0, en vace a la predicción es identificada como una “Ankle boot” i=0 plt.figure(figsize=(6,3)) plt.subplot(1,2,1) plot_image(i, predictions[i], test_labels, test_images) plt.subplot(1,2,2) plot_value_array(i, predictions[i], test_labels) plt.show() # Se graficarán múltiples imágenes. A pesar de que el modelo tiene el 88% de exactitud, puede estar equivocado. num_rows = 5 num_cols = 3 num_images = num_rows*num_cols

6

Sistemas Expertos e Inteligencia Artificial / Guía XII plt.figure(figsize=(2*2*num_cols, 2*num_rows)) for i in range(num_images): plt.subplot(num_rows, 2*num_cols, 2*i+1) plot_image(i, predictions[i], test_labels, test_images) plt.subplot(num_rows, 2*num_cols, 2*i+2) plot_value_array(i, predictions[i], test_labels) plt.tight_layout() plt.show() # Con el modelo entrenado, también podemos hacer predicciones sobre una imagen img = test_images[202] print(img.shape) img = (np.expand_dims(img,0)) print(img.shape) predictions_single = model.predict(img) print(predictions_single) np.argmax(predictions_single[0])

Investigación Complementaria Investigue 5 funciones que posee Keras, para el uso de red neuronales. Deberá explicar para que sirve el comando y mostrar un ejemplo por cada función.

Bibliografía •

Inteligencia Artificial con Aplicaciones a la Ingeniería, Pedro Ponce Cruz.



PALMA MENDEZ. J.T, MARIN MORALES. R., Inteligencia artificial, España McGraw Hill Primera Edición 2008.



TensorFlow Documentation, Obtenido de: https://www.tensorflow.org/tutorials/keras/classification