Códigos Fuente de Python

Mostrando del 21 al 30 de 770 registros
Imágen de perfil

Sumar dos imágenes.


Python

Publicado el 2 de Mayo del 2024 por Hilario (132 códigos)
267 visualizaciones desde el 2 de Mayo del 2024
PRIMERA IMAGEN.
*********************
x

SEGUNDA IMAGEN.
***********************

y

RESULTADO DE LA SUMA DE LAS IMAGENES.
*******************************************************
Figure_1

********************************************************************************************************
*******************************************************************************************************
Propongo el ejercicio:AULA-38_Fusión_Imagenes.py. Como continuación del último propuesto.
En este caso, para perfeccionar el trabajo con imagenes a través de su recorrido mediante indices,
pretendemos adiccionar dos imagenes llamadas x.jpg, e, y.jpg, y ver el reusltado.
Para este trabajo deberemos tener cargadas en nuestro sistema, las librerías, o módulos
correspondientes, en nuestro caso:

import keras
from keras.layers import Dense
import cv2
import matplotlib.pyplot as plt
import os


Por otro lado necesitaremos tener actualizado la librería numpy,
para lo que podemos utilizar este comando bajo consola de Linux:

pip install --upgrade tensorflow numpy

--------------------------------------------------------------------------
El ejercicio, basicamente requiere estos pasos.
***********************************************
1-Imporación, como se ha indicado anteriormente, de las librerias necesarias.

2-En mi caso, mi ordenador no sosporta CUDA, mi tarjeta gráfica no es del tipo Nvidea.
por lo que le indico al programa que utilice mi CPU.

3- Cargamos las imagenes.

4-Obtener las dimensiones de ambas imágenes.

5-Si las dimensiones no son iguales, redimensionar la imagen y.
a las mismas dimensiones que x.

6-Declaramos una función que utilizando un bucle anidado,
sumará las dos imagenes.

7-Mostramos el array de la imagen resultante.

8-Declaramos otra funcion para ver la imagen.

9- Llamamos a la función y mostramos la imagen.

--------------------------------------------------------------------------------
********************************************************************************
Este ejercicio ha sido realizado bajo una plataforma Linux,
Ubuntu 20.04.6 LTS.
Editado con Sublime Text.

Ejecución del ejercicio bajo consola Linux:
python3 AULA-38_Fusión_Imagenes.py
Imágen de perfil

Aplicación de la función ReLU a cada píxel.


Python

Publicado el 29 de Abril del 2024 por Hilario (132 códigos)
183 visualizaciones desde el 29 de Abril del 2024
Figure_1
original
******************************************************
********************************************************

Aula_28_Aplicar_Relu.py
*****************************
Este ejercicio que proponemos es sumamente sencillo. No por ello es importante dentro del desarrollo de redes neuronales.
Lo hacemos con el fin de aplicar una funcion Relu auna imagen, en un proceso usual dentro de las redes neuronales.

Indiquemos brevemente lo que es una funcion RELU.
---------------------------------------------------------------------
La función ReLU (Rectified Linear Unit) es una función de activación comúnmente utilizada en redes neuronales
y otras técnicas de aprendizaje automático. Se define matemáticamente de la siguiente manera:

f(x)={ 0,x
si x≤0
si x>0
​O en otras palabras, de forma más sencilla,
la función ReLU devuelve 0 para todos los valores de entrada que son negativos o iguales a cero,
y devuelve el mismo valor de entrada para valores positivos.

En el contexto de redes neuronales, la función ReLU se utiliza típicamente como función de activación
en las capas ocultas debido a su simplicidad y eficiencia computacional. Permite la introducción
de no linealidades en el modelo, lo que ayuda a que la red neuronal pueda aprender
representaciones más complejas de los datos de entrada.
*************************************************************************************************
En este ejercicio pretendemos aplicar esta función a una imagen dimensionada previamente.

Pasamos a explicar el mismo con poco de detalle.
1-Importa las bibliotecas necesarias:
numpy para el procesamiento numérico y matplotlib.pyplot para visualizar la imagen.

import numpy as np
import matplotlib.pyplot as plt

-------------------------------------------------------------------------
2-Definimos una función llamada apply_relu que toma
una imagen como entrada y aplica la función ReLU a cada píxel de la imagen.

def apply_relu(imagen):
alto, ancho, canales = imagen.shape
imagen_relu = np.zeros_like(imagen)
for i in range(alto):
for j in range(ancho):
for k in range(canales):
imagen_relu[i, j, k] = max(0, imagen[i, j, k])
return imagen_relu

-----------------------------------------------------------------------------------------
3- Carga la imagen desde un archivo. En este caso, la ruta del archivo es
/home/margarito/python/imagen.jpg.
En vuestro caso deberéis modificar esta ruta con la situación del archivo imagen.
imagen = plt.imread('/home/margarito/python/imagen.jpg')
-----------------------------------------------------------------------------------------

4-Obtiene las dimensiones de la imagen (alto y ancho) utilizando la función shape.

alto, ancho, _ = imagen.shape
----------------------------------------------------------------------------------
5-Muestra la imagen original utilizando plt.imshow.

plt.imshow(imagen)
plt.title('Imagen Original')
plt.axis('off')
plt.show()

-----------------------------------------------------------------------------------
6-Aplica la función ReLU a la imagen cargada utilizando la función apply_relu definida anteriormente

imagen_relu = apply_relu(imagen)
---------------------------------------------------------------------------------------
7-Muestra la imagen después de aplicar la función ReLU utilizando plt.imshow.
plt.imshow(imagen_relu)
plt.title('Imagen aplicando la función ReLU')
plt.axis('off')
plt.show()

*************************************************************************************

Como se puede comprobar apenas existe una modificación visible, entre las dos
imagenes, antes y después de aplicar la función Relu.
Esto puede ser debido a que los valores negativos son escasos en el array 2D de la imagen.
********************************************************************************************************
---------------------------------------------------------------------------------------------------
Este ejercicio fue ejecutado en una plataforma Linux, Ubuntu 20.04.6 LTS.
Editado con Sublime Text.

Para que su funcionamiento y ejecucion sea correcto
se deberá de tener instalado en vuestro sistema
la versión numpy-1.24.4.
Es conveniente hacer este comando en consola, para actualizarlo:

pip install --upgrade numpy
************************************************************************
Ejecución del ejercicio en linea bajo consola:
python3 Aula_28_Aplicar_Relu.py
-----------------------------------------------------------------------
Imágen de perfil
Val: 712
Bronce
Ha aumentado 1 puesto en Python (en relación al último mes)
Gráfica de Python

Buscador de archivos mediante expresiones regulares (nueva versión)


Python

Actualizado el 27 de Abril del 2024 por Antonio (76 códigos) (Publicado el 5 de Mayo del 2022)
2.518 visualizaciones desde el 5 de Mayo del 2022
Programa para buscar archivos mediante expresiones regulares.
COMANDOS:
cbd <dir> cambia el directorio base.
sch <string> realiza búsqueda por el sistema de carpetas a partir de la carpeta base.
cl realiza limpieza de pantalla.
help muestra lista de comandos.
q finaliza programa.

PARA CUALQUIER DUDA U OBSERVACIÓN, USEN LA SECCIÓN DE COMENTARIOS.
ff43
ff42
ff41
Imágen de perfil

Array MNIST. Trabajo con índices.


Python

Publicado el 21 de Abril del 2024 por Hilario (132 códigos)
307 visualizaciones desde el 21 de Abril del 2024
Figure_1
Figure_2
Figure_3

******************************************************************************************************************
Como hay alguna duda del tratamiento de imagenes Minist, a través de llamadas a
índices. Propongo este sencillo ejercicio para el Aula-28, con el fin de comprender el proceso irecorrido a través de indices para poder visualizar imágenes Minist, así como tambien entender las particularidades de este tipo de Arrays.
********************************************************************************
Paso a describir, de forma sencilla, las lineas de código del ejercicio Aula_28-Tratamiento-Indices.py

from keras.datasets import mnist
--------------------------------


Aquí estamos importando el conjunto de datos MNIST desde la biblioteca Keras. MNIST es un conjunto de datos popular utilizado para entrenar modelos de redes neuronales convolucionales (CNN) en tareas de reconocimiento de dígitos escritos a mano.

(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
-----------------------------------------------------------------------------
Esta línea carga los datos MNIST en cuatro variables: train_images y train_labels contienen las imágenes y las etiquetas correspondientes utilizadas para entrenar el modelo, mientras que test_images y test_labels contienen las imágenes y las etiquetas utilizadas para evaluar el rendimiento del modelo después del entrenamiento.

print(train_images.ndim)
print(train_images.dtype)

------------------------
Estas líneas imprimen la dimensionalidad y el tipo de datos de las imágenes de entrenamiento. train_images.ndim devuelve la cantidad de dimensiones (generalmente 3: altura, ancho y canal de color) y train_images.dtype devuelve el tipo de datos de los píxeles en las imágenes (generalmente uint8, que representa enteros sin signo de 8 bits).

digit = train_images[4888]
--------------------------

Esto selecciona una imagen específica del conjunto de datos de entrenamiento. Aquí, digit es una variable que contiene la imagen correspondiente al índice 4888 del conjunto de datos de entrenamiento.

plt.imshow(digit, cmap=plt.cm.binary)
plt.show()

------------------------------------
Estas líneas muestran la imagen seleccionada utilizando Matplotlib. plt.imshow() muestra la imagen y plt.show() muestra la ventana emergente con la imagen.

for i in range(10, 11):
plt.imshow(train_images[i], cmap=plt.cm.binary)
plt.show()

---------------------------------------------------

Este bucle muestra una sola imagen del conjunto de datos de entrenamiento. En este caso, se muestra la imagen con índice 10 (es decir, la undécima imagen) utilizando las mismas funciones de visualización de Matplotlib que se mencionaron anteriormente.

def visualizar_imagenes(mnits, indices):
...
---------------------------------------
Aquí se define una función llamada visualizar_imagenes que acepta dos argumentos: mnits, que son las imágenes que se van a visualizar, y indices, que son los índices de las imágenes que se desean visualizar.

indices_a_visualizar = [0, 100, 200, 300, 400, 500, 600, 700]
visualizar_imagenes(train_images, indices_a_visualizar)

-----------------------------------------------------------------
Finalmente, se crea una lista de índices de imágenes que se desean visualizar y se llama a la función visualizar_imagenes para mostrar esas imágenes específicas del conjunto de datos de entrenamiento.

********************************************************************
Este ejercicio fue ralizado bajo plataforma linux, concretamente con:
Ubuntu 20.04.6 LTS.
Editado con Sublime Text.
Cargado Python3.
El sistema debe tener cargado para su importación:
from keras.datasets import mnist
import matplotlib.pyplot as plt
*************************************************
Ejecucion del programa bajo consola linux.
python3 Aula_28-Tratamiento-Indices.py
Imágen de perfil
Val: 712
Bronce
Ha aumentado 1 puesto en Python (en relación al último mes)
Gráfica de Python

Juego de la Serpiente (en ASCII)


Python

estrellaestrellaestrellaestrellaestrella(1)
Actualizado el 12 de Abril del 2024 por Antonio (76 códigos) (Publicado el 30 de Marzo del 2020)
7.015 visualizaciones desde el 30 de Marzo del 2020
Versión, con caracteres ASCII del popular "Juego de la Serpiente" que incorpora una pantalla de opciones. El control de la serpiente se efectúa mediante las teclas de dirección del teclado. También puede pausarse la partida, presionando la barra espaciadora y una función para salir de partida, mediante la tecla "q".
sg4
sg7
sng
Imágen de perfil
Val: 712
Bronce
Ha aumentado 1 puesto en Python (en relación al último mes)
Gráfica de Python

Visor de gráficos financieros.


Python

estrellaestrellaestrellaestrellaestrella(2)
Actualizado el 1 de Abril del 2024 por Antonio (76 códigos) (Publicado el 7 de Julio del 2021)
9.543 visualizaciones desde el 7 de Julio del 2021
El programa muestra información relativa al precio máximo, mínimo, de apertura y cierre de un activo financiero (estos se irán almacenando en el archivo "symbols" que se generará al ejecutar el programa por primera vez) y para un periodo de tiempo. También muestra los gráficos relativos a las medias móviles exponenciales de 50 y 200 sesiones.
PARA CUALQUIER DUDA U OBSERVACIÓN USEN LA SECCIÓN DE COMENTARIOS.
gf
Imágen de perfil

Red neuronal CNN, detección de clases.


Python

Publicado el 24 de Marzo del 2024 por Hilario (132 códigos)
416 visualizaciones desde el 24 de Marzo del 2024
CLASES DE IMAGENES CON UNA MUESTRA DE CADA UNA.
-----------------------------------------------------------------------------------
Figure_1
Figure_2
Figure_3
Figure_4
Figure_5

***************************************************************
IMAGEN PROPUESTA A EVALUAR.
------------------------------------------------------------------------------

imagen

****************************************************************************************************************
TUTORIAL DEL EJERCICIO.
--------------------------------------
Este ejercicio que propongo hoy, está realizado con el fin de entender la dinámica, o forma de realizar una red neuronal CNN.

Está compuesto por tres códigos:

1- Aula_28_Descarga_Imagenes.py
-------------------------------
En este primer código accedemos a:
dataset_url = https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz"

De donde descargamos las imagenes necesarias para realizar el posterior modelo.
Las imagenes se guardaran, en nuestro usuario de Linux -Ubuntu-, en un fichero oculto (.Keras),
en un directorio llamado Datasets, en mi caso con la siguiente ruta: /home/margarito/.keras/datasets/flower_photos.
En el directorio:flower_photos, encontraremos las imagenes de las flores, con las clases a que corresponden.

Tres directorios con imágenes de estas clases:

-flower_photos
--daisy
--dandelion
--roses
--sunflowers
--tulips

Con el fin de utilizar estas imagenes de forma indirecta, copiaremos el directorio:-flower_photos
y lo pegaremos en nuestro directorio de usuario.
Al ejecutar este código, se muestra una imagen de cada clase.
---------------------------------------------------
Librerías necesarias a cargadas en vuestro sistema para la ejecución de este código:

import matplotlib.pyplot as plt
import numpy as np
import os
import PIL
import tensorflow as tf

from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras.models import Sequential
import pathlib


*************************************************************************************************************
2-Aula_28_Entreno_Modelo.py
--------------------------
Con este código, lo que hacemos es entrenar el modelo, salvandolo una vez entrenado en nuestro usuario, en el directorio donde tengamos nuestros códigos.

Básicamente este código hace lo siguiente:

Este código en Python utiliza TensorFlow y Keras para construir y entrenar una red
neuronal convolucional (CNN) para clasificar imágenes de flores. Aquí está el desglose de lo que hace cada parte del código:

Importación de bibliotecas:
Importa TensorFlow y algunas clases específicas
de Keras necesarias para el procesamiento de imágenes.

Definición de directorios y ruta del modelo:
Establece las rutas de los directorios donde se encuentran
los datos de entrenamiento de imágenes de flores y donde se guardará el modelo entrenado.

Parámetros de entrenamiento:
Define los parámetros para el entrenamiento,
como el tamaño del lote, la altura y el ancho de las imágenes, y el número de épocas.

Generador de datos de entrenamiento:
Crea un generador de datos de imágenes de entrenamiento
utilizando la clase ImageDataGenerator de Keras.
Esta clase realiza aumento de datos, como escalamiento, recorte, volteo horizontal, etc.

Configuración de generadores de flujo de datos de entrenamiento
y validación:
Configura los generadores de flujo de datos
de entrenamiento y validación utilizando el directorio de datos
de entrenamiento y especificando la división para la validación.

Creación del modelo CNN:
Define el modelo de la CNN utilizando
Sequential de Keras, que es una pila lineal de capas.
El modelo consta de varias capas convolucionales y de agrupación (pooling),
seguidas de capas totalmente conectadas. La última capa utiliza una función
de activación softmax para la clasificación de las clases de flores.

Compilación del modelo:
Compila el modelo especificando el optimizador,
la función de pérdida y las métricas para el entrenamiento.

Entrenamiento del modelo:
Entrena el modelo utilizando los generadores de flujo de datos de entrenamiento y validación.

Guardado del modelo:
Guarda el modelo entrenado en la ruta especificada.

Mensaje de finalización:
Imprime un mensaje para indicar que el modelo ha sido entrenado y guardado correctamente.

Como podéis apreciar, en mi caso de linux, las rutas donde tengo los datos,
y el lugar donde gusrado el modelo, es el siguiente:
# Rutas de los directorios de datos
train_dir = '/home/margarito/python/flower_photos'
model_path = '/home/margarito/python/Mi_Modelo_Hilario.h5'
******************************************************************************************************************

Librerías necesarias a cargadas en vuestro sistema para la ejecución de este código:
import tensorflow as tf
from tensorflow.keras.preprocessing.image import ImageDataGenerator
-------------------------------------------------------------------------------------
3-Aula_28_Probar_Modelo.py
-------------------------
Con este código voy a probar el modelo.
En mi caso he sacado una fotografia, a una flor silvestre de diente de leon,
con el fin de evaluar el acierto de mi programa.
Este programa podría resumirse de la siguiente forma:

Este código realiza la inferencia de una imagen de flor utilizando un modelo de red neuronal convolucional (CNN) previamente entrenado. Aquí está el desglose de lo que hace cada parte del código:

Importación de bibliotecas:
Importa las bibliotecas necesarias, incluyendo NumPy para manipulación de matrices
y TensorFlow para el uso del modelo y la preprocesamiento de imágenes.

Cargar el modelo previamente entrenado:
Carga el modelo de CNN previamente entrenado desde la ruta especificada en modelo_ruta.

Ruta de la imagen de la flor:
Define la ruta de la imagen de la flor que se desea clasificar.

Cargar y redimensionar la imagen:
Carga la imagen de la flor desde la ruta especificada
y la redimensiona al tamaño requerido por el modelo, que es 224x224 píxeles.

Convertir la imagen a un array numpy:
Convierte la imagen cargada en un array numpy para que pueda ser procesada por el modelo.

Preprocesamiento de la imagen:
Realiza cualquier preprocesamiento necesario en la imagen, en este caso,
expandiendo las dimensiones del array para que coincida con el formato de entrada esperado por el modelo.

Normalización de los valores de píxeles:
Normaliza los valores de píxeles de la imagen para que estén en el rango de 0 a 1,
lo que es comúnmente necesario para la entrada de los modelos de redes neuronales.

Hacer la predicción:
Utiliza el modelo cargado para realizar la predicción en la imagen preprocesada.

Obtener la clase predicha:
Identifica la clase predicha asignando etiquetas de clases a las salidas del modelo
y seleccionando la clase con el valor de probabilidad más alto.

Imprimir la clase predicha:
Imprime la clase predicha de la flor en la imagen.

En resumen, este código toma una imagen de una flor,
la procesa adecuadamente para que pueda ser ingresada
al modelo, la clasifica utilizando el modelo
previamente entrenado y luego imprime la
clase predicha de la flor en la imagen.
------------------------------------------------------
Librerías necesarias a cargadas en vuestro sistema para la ejecución de este código:

import numpy as np
import tensorflow as tf
from tensorflow.keras.preprocessing import image

*********************************************************************************
Estos ejercicios han sido realizados y ejecutados bajo consola linux.
Concretamente bajo Ubuntu 20.04.6 LTS.
Fueron editados con Sublime text.

Debereis de tener en cuenta que para la ejecución de los ejercicios
deberéis tener instaladas las librerías y módulos necesarios, segfún se indica en cada código.
----------------------------------------------

SALIDA, EN MI CASO DEL EJERCICIO DE LA IMAGEN PROPUESTA DE EVALUACIÓN:

2024-03-24 12:47:54.765845: I tensorflow/tsl/cuda/cudart_stub.cc:28] Could not find cuda drivers on your machine, GPU will not be used.
2024-03-24 12:47:54.797982: I tensorflow/tsl/cuda/cudart_stub.cc:28] Could not find cuda drivers on your machine, GPU will not be used.
2024-03-24 12:47:54.798348: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
2024-03-24 12:47:55.329900: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT

1/1 [==============================] - ETA: 0s
1/1 [==============================] - 0s 114ms/step
La flor en la imagen es: dandelion
[Finished in 2.9s]
Imágen de perfil
Val: 712
Bronce
Ha aumentado 1 puesto en Python (en relación al último mes)
Gráfica de Python

Stock Monitor


Python

Actualizado el 18 de Marzo del 2024 por Antonio (76 códigos) (Publicado el 22 de Octubre del 2023)
1.385 visualizaciones desde el 22 de Octubre del 2023
El siguiente script muestra en tiempo real las cotizaciones en bolsa, de acciones e índices bursátiles.
El programa utiliza un bucle en el que va realizando sucesivas peticiones de datos, usando 'yfinance'. Entre una petición y la siguiente, media un tiempo en segundos que viene determinado por la opción '-delay/--time_delay', teniendo un valor por defecto de 5 segundos y no pudiendo ser inferior a 0.5
Para detener la obtención de datos, pulsar la barra espaciadora. Al hacerlo, el programa mostrará el texto 'wait until application ends..' ya que tendrá que esperar el tiempo que quede restante del especificado por '-delay/--time_delay'. Finalizando definitivamente, transcurrido dicho tiempo restante.

ARGUMENTOS:
'-tick/--ticker' : Ticker o símbolo del valor cuya cotización se quiere obtener.
'-delay/--time_delay': Periodicidad, en segundos, entre una petición de datos y la siguiente.
'-clr/--color': Mostrar precio de cierre en color, en función de su fluctuación respecto del valor anterior.
'-uind/--use_index': Incluir esta opción para obtener cotizaciones de índices bursátiles (ej: ^IXIC, ^DJI..)

La petición de valores se interrumpe pulsando la barra espaciadora.
PARA CUALQUIER DUDA U OBSERVACIÓN, UTILICEN LA SECCIÓN DE COMENTARIOS.

sm1
sm2
sm3
Imágen de perfil

Evaluación con datos MINIST.


Python

Publicado el 10 de Marzo del 2024 por Hilario (132 códigos)
319 visualizaciones desde el 10 de Marzo del 2024
NÚMERO A PREDECIR.
--------------------------------
numero

*******************************************************************************************************************
Evaluamos como aprendizaje este ejercicio: Aula_18_Evaluar_CNN_Datos_Minist.py.
Este ejercicio propuesto está entrenado con datos MINIST.
Con el fin de que el Alunno, pueda apreciar la configuracion, y la estructura de datos,
guardamos el módulo entrenado en nuestro ordenador, en formato directorio, con el nombre :
MI-MODULO-MINIST


MNIST se refiere a un conjunto de datos muy utilizado
en el ámbito de la visión por computadora y el aprendizaje profundo.

El conjunto de datos MNIST consiste en imágenes de dígitos escritos
a mano, del 0 al 9. Cada imagen es en escala de grises y tiene un
tamaño de 28x28 píxeles. El conjunto está dividido en un conjunto
de entrenamiento y un conjunto de prueba, y se utiliza comúnmente
como punto de partida para probar algoritmos y modelos de aprendizaje
automático, especialmente en el contexto de reconocimiento de dígitos.

En nuestro código, estamos utilizando el conjunto de datos MNIST
proporcionado por TensorFlow para entrenar y evaluar tu red neuronal
convolucional (CNN) en el reconocimiento de estos dígitos manuscritos.

Como podemos apreciar, la evaluación del ejercicio, no es del todo positiva.
El alumno puede modificarlo para intentar ajustarlo.

*********************************************************************

El ejercicio propuesto podríamos describirlo, por pasos de la siguiente
forma:

Importaciones de Bibliotecas:
********************************

Se importa TensorFlow, una biblioteca popular para aprendizaje profundo y otras tareas de machine learning.
Se importan clases y funciones específicas de TensorFlow, como Dense, Flatten, Conv2D, Model, y otras necesarias para construir y entrenar modelos de redes neuronales.
Carga de Datos MNIST:

Utiliza TensorFlow para cargar el conjunto de datos MNIST, que consiste en imágenes de dígitos escritos a mano y sus respectivas etiquetas de clase (números del 0 al 9).
Normaliza las imágenes dividiendo los valores de píxeles por 255.0.

Preparación de Datos:
************************
Añade una dimensión extra a las imágenes para representar los canales de color (en este caso, escala de grises).
Crea conjuntos de datos (train_ds y test_ds) usando TensorFlow Dataset API para facilitar el manejo y la alimentación de datos durante el entrenamiento y prueba.

Definimos el Modelo:
***********************
Define una clase MyModel que hereda de la clase Model. Esta clase representa el modelo de la red neuronal convolucional (CNN) que se construirá.
En el constructor (__init__), se definen capas de convolución, aplanado (flatten), y capas densas.
En el método call, se define la secuencia de operaciones para la propagación hacia adelante.

Configuración de Entrenamiento:
************************************
Define funciones de pérdida, optimizador y métricas para la fase de entrenamiento.
Define funciones train_step y test_step utilizando decoradores de TensorFlow (@tf.function) para ejecutar estas funciones de manera eficiente en modo gráfico.

Bucle de Entrenamiento:
***************************
Itera a través de un número de épocas predefinido (EPOCHS).
En cada época, realiza un bucle de entrenamiento y otro de prueba.
Muestra métricas como pérdida y precisión durante el entrenamiento y la prueba.

Guardamos del Modelo:
*******************
Guarda el modelo entrenado en un directorio especificado.

Carga de Imagen para Predicción:
*******************************
Intenta cargar una imagen (numero.jpg) para realizar una predicción utilizando el modelo entrenado.
Se produce un error debido a que el archivo no se encuentra en la ubicación especificada.

Impresión de Resultados:
*****************************
Imprime el número predicho y el porcentaje de precisión para la clase predicha.

****************************************************************************
SALIDA POR CONSOLA, SIN ACIERTO.

****************************************************************************
SALIDA POR CONSOLA, SIN ACIERTO.

TensorFlow version: 2.13.1
Por favor, ESPERA A REALIZAR LAS 10 EPOCHS
Epoch 1, Loss: 0.13401952385902405, Accuracy: 95.94000244140625, Test Loss: 0.06022726744413376, Test Accuracy: 98.1500015258789
Epoch 2, Loss: 0.04087728634476662, Accuracy: 98.68333435058594, Test Loss: 0.055624209344387054, Test Accuracy: 98.18999481201172
Epoch 3, Loss: 0.02175530232489109, Accuracy: 99.288330078125, Test Loss: 0.05986746773123741, Test Accuracy: 98.12999725341797
Epoch 4, Loss: 0.013109182007610798, Accuracy: 99.57167053222656, Test Loss: 0.05405193939805031, Test Accuracy: 98.32999420166016
Epoch 5, Loss: 0.008494390174746513, Accuracy: 99.70832824707031, Test Loss: 0.06368830800056458, Test Accuracy: 98.44999694824219
Epoch 6, Loss: 0.008195172995328903, Accuracy: 99.7249984741211, Test Loss: 0.07445775717496872, Test Accuracy: 98.33999633789062
Epoch 7, Loss: 0.005741223692893982, Accuracy: 99.8066635131836, Test Loss: 0.07288998365402222, Test Accuracy: 98.38999938964844
Epoch 8, Loss: 0.003435570513829589, Accuracy: 99.8933334350586, Test Loss: 0.08180861920118332, Test Accuracy: 98.32999420166016
Epoch 9, Loss: 0.0059661963023245335, Accuracy: 99.80500030517578, Test Loss: 0.0844760537147522, Test Accuracy: 98.25999450683594
Epoch 10, Loss: 0.002849259879440069, Accuracy: 99.90166473388672, Test Loss: 0.08755964040756226, Test Accuracy: 98.3499984741211
Salvamos MI-MODULO-MINIST
1/1 [==============================] - 0s 49ms/step
Número predicho: 3 <-------------------En esta predicción hemos tenido éxito.
Porcentaje de precisión: 39.92%

************************************************************
-------------------------------------------------------------------
Este ejercicio ha sido realizado bajo una plataforma Linux.
Ubuntu 20.04.6 LTS.
Editado con Sublime text.

El alumno, deberá tener cargadas las librerias necesarias en el sistema.
import tensorflow as tf
from tensorflow.keras.models import load_model
from tensorflow.keras.preprocessing import image
import numpy as np

------------------------------------------------------------
Ejecución bajo consola Linux.
python3 Aula_18_Evaluar_CNN_Datos_Minist.py
Imágen de perfil

InceptionV3


Python

Publicado el 7 de Marzo del 2024 por Hilario (132 códigos)
382 visualizaciones desde el 7 de Marzo del 2024
IMAGEN A PREDECIR.
-------------------------------
predice

********************************************************************************************************************
Pretendemos evaluar el acierto de este ejercicio de red neuronal convolucional, CNN.
-----------------------------------------------------------------------------------------------------------------
Planteamos el sencillo código: Aula_28_inception_v3.py, utilizando una arquitectura de red neuronal convolucional (CNN), que se utiliza comúnmente para tareas de visión por computadora, como clasificación de imágenes.
Fue desarrollada por Google y es parte de la familia de modelos Inception.

La idea clave detrás de InceptionV3 es utilizar múltiples tamaños de filtros convolucionales
en paralelo para capturar patrones de diferentes escalas en una imagen. En lugar de elegir
un solo tamaño de filtro, InceptionV3 utiliza varios tamaños, desde pequeños hasta grandes,
y luego concatena las salidas de estos filtros para formar una representación más rica y completa de la imagen.

Además, InceptionV3 incorpora módulos llamados "módulos de Inception",
que son bloques de construcción que contienen diferentes operaciones convolucionales en paralelo.
Estos módulos permiten que la red aprenda representaciones más complejas y abstractas de las imágenes.

Sus principales características y funciones son las siguientes:

Extracción jerárquica de características: InceptionV3 utiliza capas convolucionales
para extraer características jerárquicas de las imágenes. Estas capas aprenden patrones
simples en las capas iniciales y patrones más complejos y abstractos a medida que se profundiza en la red.

Módulos de Inception: La arquitectura de InceptionV3 utiliza módulos llamados "módulos de Inception" o "bloques Inception".
Estos módulos incorporan múltiples operaciones convolucionales de diferentes tamaños de filtro en paralelo. Al hacerlo,
la red puede capturar patrones de información a diferentes escalas en una imagen.

Reducción de dimensionalidad: InceptionV3 incluye capas de reducción de dimensionalidad,
como capas de agrupación máxima y capas de convolución 1x1, para reducir la cantidad de
parámetros y operaciones, haciendo que la red sea más eficiente y manejable.

Regularización: La red incluye técnicas de regularización, como la normalización por lotes y la
regularización L2, para prevenir el sobreajuste y mejorar la generalización del modelo.

Arquitectura profunda: InceptionV3 es una red profunda con muchas capas, lo que le permite
aprender representaciones complejas y abstractas de las imágenes, lo que es beneficioso
para tareas de clasificación de imágenes en conjuntos de datos grandes y complejos.
**************************************************************************************
SALIDA DEL EJERCICIO, AL APORTAR LA IMAGEN DE MUESTRA.
1/1 [==============================] - ETA: 0s
1/1 [==============================] - 1s 744ms/step
1: trailer_truck (0.70)
2: moving_van (0.08)
3: garbage_truck (0.05)
[Finished in 3.9s]
**************************************************************************************
Se debera modificar en el código, la ruta de la imagen de muestra desde tu ordenador.
*************************************************************************************

El ejercicio ha sido realizado bajo plataforma linux.
Ubuntu 20.04.6 LTS.
Editado con Sublime Text.
Ejecución bajo consola linux:
python3 Aula_28_inception_v3.py
---------------------------------------------------------------------------------------