Historial de los últimos códigos añadidos

Listado de los últimos códigos introducidos.
Imágen de perfil
Actualizado

Stock Monitor


Python

Actualizado el 18 de Marzo del 2024 por Antonio (75 códigos) (Publicado el 22 de Octubre del 2023)
1.145 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
Actualizado

Suavizado de imagen en archivos de vídeo por 'Filtrado bilateral', (aplicación en línea de comandos)


Python

Actualizado el 15 de Marzo del 2024 por Antonio (75 códigos) (Publicado el 20 de Marzo del 2023)
5.492 visualizaciones desde el 20 de Marzo del 2023
Programa para realizar filtrado de imagen en archivos de vídeo (preferiblemente de corta duración) utilizando el algoritmo de 'filtrado bilateral' pudiendo especificar los valores sigma de espacio y color y el diámetro del vecindario para cada pixel. Los vídeos filtrados se generan, por defecto, conservando su sonido, aunque se pueden generar sin este introduciendo el argumento '-ae'/'--exclude_audio'.

ARGUMENTOS:
-src/--source: Nombre del vídeo original (OBLIGATORIO)
-dest/--destination: Nombre del video a generar ('NewFilteredVid.mp4' por defecto)
-sgc/--sigma_color: Valor sigma para espacio de color (75 por defecto)
-sgs/--sigma_space: Valor sigma espacial (75 por defecto)
-pd/--pixel_diameter: Diámetro de la vecindad de píxeles (9 por defecto)
-ae/--exclude_audio: Excluir audio y generar video sin sonido (OPCIONAL)

PARA CUALQUIER DUDA U OBSERVACIÓN UTILIZEN LA SECCIÓN DE COMENTARIOS
bvf
bvf2
bvf3
bvf4
Imágen de perfil
Actualizado

Reproductor de música.


Python

Actualizado el 13 de Marzo del 2024 por Antonio (75 códigos) (Publicado el 20 de Abril del 2021)
22.955 visualizaciones desde el 20 de Abril del 2021
Programa para reproducir archivos de audio que incorpora la posibilidad de crear una lista de favoritos.
El programa necesita de un archivo "json" que se generará al ejecutarse por primera vez.
PARA CUALQUIER DUDA U OBSERVACIÓN USEN LA SECCIÓN DE COMENTARIOS.
mp
Imágen de perfil
Actualizado

Cx_Contabilidad Financiera


Visual Basic

estrellaestrellaestrellaestrellaestrella(6)
Actualizado el 13 de Marzo del 2024 por Rafael (22 códigos) (Publicado el 21 de Diciembre del 2022)
17.029 visualizaciones desde el 21 de Diciembre del 2022
Cx es un programa para Windows.
Sirve para gestionar la contabilidad.
Produce: libro diario, auxiliar,
balanzas, recapitulación, estados financieros,
balance general, estado de pérdidas y ganancias,
estado de resultados y estados de cuentas.
Servosistema que administra
la oficina sin papeles.
Multiusuario cliente/servidor, red inalámbrica.
Código abierto. Trabajo a distancia.
Adjunto Cx Guía del rey de la creación

Sin-titulo
Imágen de perfil
Actualizado

Generador de gifs a partir de video, en línea de comandos.


Python

estrellaestrellaestrellaestrellaestrella(4)
Actualizado el 12 de Marzo del 2024 por Antonio (75 códigos) (Publicado el 9 de Diciembre del 2022)
7.927 visualizaciones desde el 9 de Diciembre del 2022
Programa para generar gifs animados a partir de vídeos, que se ejecuta en la línea de comandos.
ARGUMENTOS:
-src/--source: Nombre del vídeo original (obligatorio).
-dest/--destination: Nombre del archivo a generar (opcional).
-sz/--size: Tamaño en porcentaje del gif respecto al vídeo original (opcional).
-shw/--show: Muestra resultado en ventana emergente al finalizar el proceso de generado (opcional).
-st/--start: Segundo inicial para gif (opcional).
-e/--end: Segundo final (opcional).
-spd/--speed: Velocidad relativa de la animación (opcional)

PARA CUALQUIER DUDA U OBSERVACIÓN, USEN LA SECCIÓN DE COMENTARIOS.

mk
Imágen de perfil

Evaluación con datos MINIST.


Python

Publicado el 10 de Marzo del 2024 por Hilario (120 códigos)
172 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

Vista 'grid' (demo)


Python

Actualizado el 7 de Marzo del 2024 por Antonio (75 códigos) (Publicado el 31 de Julio del 2023)
2.332 visualizaciones desde el 31 de Julio del 2023
El siguiente código muestra un grid en pantalla por el que se puede desplazar usando los botones de dirección:

Botón de dirección derecha: Desplazamiento hacia la derecha.
Botón de dirección izquierdo: Desplazamiento a la izquierda.
Botón de dirección superior: Desplazamiento hacia adelante.
Botón de dirección inferior: Desplazamiento hacia atrás.
Botones 'o', 'p', 'k' y 'l': Desplazamientos en diagonal.

grid
Imágen de perfil

InceptionV3


Python

Publicado el 7 de Marzo del 2024 por Hilario (120 códigos)
179 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
---------------------------------------------------------------------------------------
Imágen de perfil

Lector, por cámara, de códigos "QR"


Python

estrellaestrellaestrellaestrellaestrella(12)
Actualizado el 7 de Marzo del 2024 por Antonio (75 códigos) (Publicado el 22 de Abril del 2020)
41.718 visualizaciones desde el 22 de Abril del 2020
El programa tiene como objeto principal, la lectura, haciendo uso de la cámara web, de códigos QR. Para ello, simplemente pulsaremos el botón "INICIAR LECTURA POR CAMARA" (que desplegará el visor de la cámara) y colocaremos el código a leer, delante de la cámara. A su vez, también podremos leer códigos QR, en formato "png" y "jpg" almacenados en nuestra computadora (para lo que usaremos la opción "CARGAR ARCHIVO". Finalmente, también podremos leer, directamente, un código que se encuentre visible en pantalla (botón "DETECTAR EN PANTALLA").

qrcc
qrcm1
Imágen de perfil

Comprobar eficacia, código CNN.


Python

Publicado el 6 de Marzo del 2024 por Hilario (120 códigos)
109 visualizaciones desde el 6 de Marzo del 2024
IMAGEN A PREDECIR.
-----------------------------

zapato

El codigo de estudio, fue recogido en la página oficial de Tensorflow, con el Copyright (c) 2017 de François Chollet.

Ver nota final de uso.
Lo que trato con este ejercicio, es añadirle un tramo de código, con el fin de probar su eficacia al añadirle la predicción de una imagen aportada por mí.
Por lo que pude apreciar, los resultados no son del todo halagueños.


# Copyright (c) 2017 François Chollet
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the "Software"),
# to deal in the Software without restriction, including without limitation
# the rights to use, copy, modify, merge, publish, distribute, sublicense,
# and/or sell copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
Imágen de perfil

CALENARIO


C sharp

Publicado el 6 de Marzo del 2024 por Benito De Jesus
64 visualizaciones desde el 6 de Marzo del 2024
calendario en base a inicio de semana domingo, especial para empresas que manejan proceso de produccion semanal como bananeras
Calendario1
Imágen de perfil

Colector de links


Python

Actualizado el 2 de Marzo del 2024 por Antonio (75 códigos) (Publicado el 6 de Marzo del 2022)
3.337 visualizaciones desde el 6 de Marzo del 2022
Aplicación para guardar accesos directos a internet (que se guardan en un archivo 'json' que se genera al ejecutar el programa por primera vez), mediante la introducción de la URL en la entrada superior (o su copia mediante el botón 'IMPORT NEW LINK'). El nuevo acceso se guarda mediante el botón "SAVE LINK AS:" que abrirá una ventana pidiendo el nombre del nuevo acceso. Una vez guardado el acceso, se podrá acceder a la correspondiente página seleccionando, en la lista, el elemento guardado y clicando en el botón 'ACCESS' (admite selección normal y múltiple). También permite la eliminación la totalidad de los link o solo los seleccionados. También permite la búsqueda por nombre entre los accesos guardados. El botón "SAVE LIST" generará un archivo de texto con los nombres de enlace y sus correspondientes URLs asociadas, que estén almacenados en el archivo JSON.
PARA CUALQUIER DUDA U OBSERVACIÓN, USEN LA SECCIÓN DE COMENTARIOS.
LNKC
Imágen de perfil

PyTorch


Python

Publicado el 29 de Febrero del 2024 por Hilario (120 códigos)
196 visualizaciones desde el 29 de Febrero del 2024
Imagen a predecir.

***********************************************************
perro

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

Propongo el ejercicio: Aula_18_Ejercicio_torch.py
Este ejercicio fue realizado con PyTorch.
En mi caso lo he editado con Sublime text, y lo he ejecutado bajo consola
con Ubuntu 20.04.6 LTS.

Si se tuviera problemas para ejecutarlo bajo consola linux, por sosportación CUDA, al no tener GPU Nvidia, se podría optar
por su edición y ejecución bajo Google Colab, utilizando Drive de Google, como almacenamiento.
*******************************************************************************************************************
El ejercicio, muestra la opción más posible por porcentajes, y nos remite a una página web para comprobar el resultado.

Vease una salida tipo:

SALIDA POR CONSOLA LINUX.
West Highland white terrier 0.7944785952568054
Maltese dog 0.025748323649168015
Norwich terrier 0.013491143472492695
Scotch terrier 0.0073037706315517426
cairn 0.005692108068615198
Para ver imágenes de 'West Highland white terrier', visita: https://www.google.com/search?q=West+Highland+white+terrier&tbm=isch

****************************************************************************************************************************************************************************************************************************************
PyTorch, un marco de trabajo de aprendizaje profundo (deep learning) de código abierto desarrollado por Facebook. PyTorch es conocido por su flexibilidad y facilidad de uso, y es utilizado tanto en la investigación académica como en la producción industrial para desarrollar y entrenar modelos de aprendizaje profundo.

A continuación, se describen algunos aspectos clave de PyTorch:

Tensores:
PyTorch utiliza tensores como su estructura de datos fundamental. Los tensores son similares a los arreglos multidimensionales de NumPy y pueden representar datos numéricos para entrenar modelos de aprendizaje profundo.
Autograd:
PyTorch incorpora un sistema de diferenciación automática llamado Autograd. Este sistema permite calcular automáticamente gradientes para los tensores, facilitando la retropropagación y el entrenamiento de modelos.
Dinámica de gráficos computacionales:
A diferencia de algunos otros marcos de trabajo de aprendizaje profundo que utilizan gráficos computacionales estáticos, PyTorch utiliza gráficos computacionales dinámicos. Esto proporciona flexibilidad al construir y modificar dinámicamente la estructura del grafo durante la ejecución.
API amigable:
PyTorch ofrece una API amigable y fácil de usar que facilita el proceso de experimentación y desarrollo. Esto ha contribuido a su popularidad en la comunidad de investigación y desarrollo de aprendizaje profundo.
Módulos para visión, procesamiento de lenguaje natural, etc.:

PyTorch cuenta con diversos módulos y paquetes, como torchvision para visión por computadora, torchtext para procesamiento de lenguaje natural, y otros, que facilitan el desarrollo de modelos en diversas áreas de aplicación.
Compatibilidad con GPU:
PyTorch está diseñado para aprovechar el rendimiento de las GPU para acelerar el entrenamiento de modelos. Esto se logra mediante la ejecución de operaciones en tensores en GPU cuando sea posible.

Comunidad activa y soporte:

PyTorch cuenta con una comunidad activa de usuarios y desarrolladores, y hay una amplia variedad de recursos, tutoriales y documentación disponible.
En resumen, PyTorch (o simplemente torch en referencia a su nombre de paquete) es un marco de trabajo de aprendizaje profundo que ha ganado popularidad debido a su flexibilidad, facilidad de uso y la adopción en la comunidad de investigación y desarrollo de inteligencia artificial.


********************************************************************************************************************
Este script de Python utiliza PyTorch y la biblioteca de visión de torchvision para cargar un modelo de red neuronal preentrenado
(GoogleNet) y realizar inferencias sobre una imagen específica. Aquí está una descripción paso a paso del código:

Importación de bibliotecas:
import torch
from PIL import Image
from torchvision import transforms

torch: Librería principal de PyTorch.
Image: Clase de la biblioteca Python Imaging Library (PIL) para trabajar con imágenes.
transforms: Módulo de torchvision que proporciona funciones para realizar transformaciones en imágenes, como cambiar el tamaño, recortar, etc.

***********************************************************************
Carga del modelo preentrenado:

model = torch.hub.load('pytorch/vision:v0.10.0', 'googlenet', pretrained=True)
model.eval()

*******************************************************************************
Preprocesamiento de la imagen:

preprocess = transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])

Se define una serie de transformaciones para preprocesar la imagen, incluyendo el cambio de tamaño, recorte, conversión a tensor y normalización.
*******************************************************************************
Carga de la imagen y aplicación del preprocesamiento:

input_image = Image.open(image_path_drive)
input_tensor = preprocess(input_image)
input_batch = input_tensor.unsqueeze(0)

Se carga la imagen desde la ruta especificada y se aplica el preprocesamiento.
**************************************************************************************
Transferencia a GPU (si está disponible):
if torch.cuda.is_available():
input_batch = input_batch.to('cuda')
model.to('cuda')

Si la GPU está disponible, se mueve tanto la entrada como el modelo a la GPU.
**********************************************************************************************
Inferencia del modelo:
with torch.no_grad():
output = model(input_batch)
Se realiza la inferencia en el modelo preentrenado para obtener las puntuaciones de salida
**************************************************************************************************
Postprocesamiento y visualización de resultados:
probabilities = torch.nn.functional.softmax(output[0], dim=0)
top5_prob, top5_catid = torch.topk(probabilities, 5)

for i in range(top5_prob.size(0)):
print(categories[top5_catid[i]], top5_prob[i].item())

Se calculan las probabilidades utilizando softmax y se imprimen las cinco categorías principales junto con sus puntuaciones de confianza.
*********************************************************************************************************

Búsqueda en Google Imagenes:

top_category = categories[top5_catid[0]]
search_query = top_category.replace(" ", "+")
search_link = f"https://www.google.com/search?q={search_query}&tbm=isch"
print(f"Para ver imágenes de '{top_category}', visita: {search_link}")

Se selecciona la categoría principal (la de mayor puntuación) y se construye un enlace para buscar imágenes relacionadas en Google Images.
********************************************************************************************************************

En resumen, este programa demuestra cómo cargar un modelo preentrenado, realizar inferencias en una imagen,
y luego visualizar las categorías principales y realizar una búsqueda en Google Images basada en la categoría principal identificada por el modelo.

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

EXIGENCIAS PARA SU DEBIDA EJECUCIÓN BAJO LINUX.
----------------------------------------------

Preparar la carga de librerías para un sistema Linux.
En concreto: Ubuntu 20.04.6 LTS. Se deberán cargar de
la siguiente forma, y en esta secuencia, en consola Linux:

sudo apt-get update
sudo apt-get install -y python3-pip python3-dev python3-venv
sudo apt-get install -y libopenblas-base libopenmpi-dev

-----------------------------------------------------
python3 -m venv myenv
source myenv/bin/activate

----------------------------------------------------
pip install torch torchvision torchaudio

----------------------------------------------
Comprobamos que todo ha ido bien:
import torch
print(torch.__version__)

----------------------------------------------------
También debemos descargar a nuestro directorio actual de ejecucion:imagenet_classes.txt
con este comando:
wget https://raw.githubusercontent.com/pytorch/hub/master/imagenet_classes.txt

Debemos bajar la imagen de una raza de perro, y proporcionar la ruta para
que el programa haga la predicción. En mi caso sería:
image_path_drive = '/home/margarito/python/perro.jpg'

****************************************************************************
Como comenté en mi caso, el ejercicio fue realizado en una plataforma Linux.
Ubuntu 20.04.6 LTS.
Ejecución bajo consola con este comando:
python3 Aula_18_Ejercicio_torch.py

----------------------------------------------------------------------------------------------------------------------------------------
Imágen de perfil

Estructura de un Pixel.


Python

Publicado el 26 de Febrero del 2024 por Hilario (120 códigos)
174 visualizaciones desde el 26 de Febrero del 2024
1
2
3
4
5
6

***********************************************************************************************************************
Propongo este sencillo ejercicio:Aula_18_Pixel.py,
realizado en python, con el fin de ver la estructura de una imagen.
Permite aplicar zoom a una imagen, hasta llegar a ver la configuración y los valores,
en los diferentes canales de los pixels que la componen, pixel a pixel.
(Ver imágenes adjuntas)

Esta es una pequeña explicación del código que forma parte del ejercicio:

El código en Python utiliza la biblioteca OpenCV para cargar una imagen, mostrarla en una ventana, visualizar los valores de los píxeles y luego guardar la imagen resultante. Aquí tienes una descripción línea por línea:

import cv2: Importa la biblioteca OpenCV, que es utilizada para procesamiento de imágenes y visión por computadora.

import numpy as np: Importa la biblioteca NumPy y la asigna al alias 'np'. NumPy se utiliza para manipular matrices y arreglos, y se usa en conjunto con OpenCV en este código.

image_path = '/home/margarito/python/lorenzo.jpg': Asigna la ruta de la imagen de prueba a la variable image_path. Debes cambiar esta ruta por la ubicación de tu propia imagen.

image = cv2.imread(image_path): Lee la imagen desde la ruta especificada usando la función cv2.imread y guarda la imagen en la variable image.

cv2.imshow("Output Image", image): Muestra la imagen en una ventana con el título "Output Image" utilizando la función cv2.imshow.

cv2.waitKey(0): Espera hasta que se presione una tecla (código de tecla 0 indica que espera indefinidamente) antes de continuar la ejecución del programa.

cv2.destroyAllWindows(): Cierra todas las ventanas de visualización creadas por OpenCV.

cv2.imwrite("output_image.jpg", image): Guarda la imagen actual en el archivo "output_image.jpg" utilizando la función cv2.imwrite.

Este código es un muy ejemplo básico de cómo cargar, visualizar y guardar una imagen usando OpenCV en Python.
************************************************************************************************
El ejercicio fue ejecutado en una plataforma Linux, Ubuntu 20.04.6 LTS.
Editado con: Sublime text.
Se deberá tener caragdo en el sistema las librerías necesarias a importar:

import cv2
import numpy as np

Ejecutar bajo consola linux:python3 Aula_18_Pixel.py
Imágen de perfil

Zoom.


Python

Publicado el 23 de Febrero del 2024 por Hilario (120 códigos)
185 visualizaciones desde el 23 de Febrero del 2024
Figure_1
Figure_2
Figure_3

Este es un ejemplo sencillo, un ejemplo de cómo editar cualquier imagen de tres canales RGB, con ruta a tu ordenador . Para poder visualizar la imagen, y realizar zoon a la misma, hasta poder visualizar el valor de los pixeles en los tres canales RGB en la propia consola, con este tipo de salida:

Rectángulo seleccionado: (1564, 576) - (2400, 2239)
Rectángulo seleccionado: (1750, 956) - (2172, 1741)
Rectángulo seleccionado: (1066, 332) - (3362, 2374)
Rectángulo seleccionado: (1066, 323) - (3362, 2366)
Rectángulo seleccionado: (1539, 678) - (2307, 1843)
Rectángulo seleccionado: (914, 256) - (2704, 2273)
Rectángulo seleccionado: (914, 256) - (2704, 2273)
Rectángulo seleccionado: (1319, 796) - (1800, 1589)
Rectángulo seleccionado: (838, 534) - (2864, 2383)
Rectángulo seleccionado: (1176, 728) - (2307, 1615)
Rectángulo seleccionado: (1176, 1437) - (2307, 1615)
Rectángulo seleccionado: (787, 382) - (1724, 1995)
Rectángulo seleccionado: (1108, 1058) - (1108, 1058)
Rectángulo seleccionado: (1345, 737) - (3219, 2501)
Rectángulo seleccionado: (171, 154) - (4046, 2839)


Lo construimos aplicando las librerías usuales de Python

Otra forma de hacerlo podría ser importando OpenCV para manejar imágenes, visualizarlas y realizar operaciones como el zoom. Puedes adaptar el código según tu preferencia de biblioteca, y adaptarlo a esta otra librería.

********************************************************************************************************************
A continuación resumimos los pasos esenciales de este sencillo ejercicio:

Importación de Bibliotecas:
--------------------------
Se importan las bibliotecas necesarias, que incluyen matplotlib.pyplot, matplotlib.widgets.RectangleSelector, y matplotlib.image.

Carga de la Imagen:
--------------------------
Se especifica la ruta de la imagen en el ordenador.
La imagen se carga utilizando la función mpimg.imread de matplotlib.image.

Creación de la Figura:
----------------------------
Se crea una figura y un conjunto de ejes utilizando plt.subplots().
La imagen se muestra en los ejes con ax.imshow().

Definición de Funciones:
----------------------------------------
Se define una función onselect que se ejecutará cuando se seleccione un rectángulo.
Dentro de esta función, se calculan las coordenadas del rectángulo seleccionado y se imprimen en la consola.

Lista de Coordenadas de Rectángulos:
--------------------------------------------------
Se crea una lista rect_coords para almacenar las coordenadas de los rectángulos seleccionados.

Selector de Rectángulos:
------------------------------------
Se crea un objeto RectangleSelector que está asociado a los ejes (ax) y la función onselect.
Se especifica el botón del ratón permitido para la interacción (button=[1]), y otras configuraciones como la mínima separación horizontal y vertical (minspanx y minspany), y las coordenadas en las que se mide el ancho y el alto (spancoords).
Visualización y Interacción:

La imagen y los ejes se muestran con plt.show().
Se imprime un mensaje indicando que se puede hacer clic y arrastrar para seleccionar un rectángulo.
En resumen, este código crea una interfaz interactiva que te permite hacer clic y arrastrar para seleccionar rectángulos en una imagen. Las coordenadas de los rectángulos seleccionados se imprimen en la consola. Puedes ajustar las configuraciones según tus necesidades, como el botón del ratón permitido, la sensibilidad de la selección, entre otros.

------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
Realizado en platafroam Linux.
Ubuntu 20.04.6 LTS
Editado con:Sublime Text.

Ejecución bajo consola de linux.
python3 Aula_28_Zoom_Pixel.py
Imágen de perfil

Salidas entre Convolución CNN.


Python

Publicado el 21 de Febrero del 2024 por Hilario (120 códigos)
173 visualizaciones desde el 21 de Febrero del 2024
Figure_1
Figure_2
Figure_3
Figure_4
Figure_5
Figure_6
Figure_7
Figure_8
Figure_9

********************************************************************************************************************
Propongo el ejercicio: Aula_18_Feb_24.py, realizado en python. En el mismo trato de formular una red convolucional, lo más sencilla posible, con el fin ver el desarrollo de nueve capas convolucionales. Tratando de indagar y visualizar la salida después de cada capa utilizando un bucle. Por cada salto de bucle iremos viendo los valores correspondientes de la activación, al mismo tiempo que visualizaremos el resultado de la imagen, que será un tanto incongruente ya que sólo se trata de ver su funcionamiento.

A continuación describo las particularidades de este corto código:
*************************************************************************
Como se aprecia en las llamadas iniciales de importación de módulos, utiliza TensorFlow y Keras para crear un modelo de red neuronal convolucional (CNN) y visualiza las salidas de cada capa convolucional para una imagen de entrada aleatoria. Aquí está la descripción del código:

Importar bibliotecas:
------------------------------
numpy: Para trabajar con matrices y generar imágenes aleatorias.
matplotlib.pyplot: Para visualizar las salidas de cada capa convolucional.
tensorflow.keras.models.Sequential y tensorflow.keras.layers.Conv2D: Para construir la arquitectura del modelo CNN.

Crear el modelo:
---------------------
Se crea un modelo secuencial (Sequential) que representa la arquitectura de la red.

Agregar capas convolucionales:
------------------------------------------------
Se agregan varias capas convolucionales al modelo con diferentes números de filtros y funciones de activación ReLU.

Obtener las salidas de cada capa convolucional:
-----------------------------------------------------------------------
Se crea un modelo de visualización (visualization_model) que toma la entrada del modelo original y produce las salidas de cada capa convolucional.

Generar una imagen de entrada aleatoria:
-----------------------------------------------------------
Se crea una imagen de entrada ficticia con dimensiones (1, 600, 506, 3).
Si se quiere se podría hacer con carácter fijo en vez de aleatorio.

Obtener las activaciones de cada capa:
--------------------------------------------------------
Se obtienen las activaciones de cada capa convolucional para la imagen de entrada utilizando el modelo de visualización.

Visualizar las salidas de cada capa:
----------------------------------------------
Se itera sobre las activaciones y se muestra la salida de cada capa convolucional. Si la salida tiene cuatro dimensiones, se aplanan y visualizan las activaciones en escala de grises.
Como indiqué, este código es útil para entender cómo evoluciona la representación de la imagen a medida que pasa a través de las capas convolucionales de la red. Cada visualización muestra las activaciones de una capa particular, lo que puede ayudar a interpretar cómo la red extrae características en diferentes niveles de abstracción.

******************************************************************************************************************
Este código fue realizado bajo plataforma linux, con Ubuntu 20.04.6 LTS.
Fue editado con Sublime text.
Se deberá tener en cuenta que el sistema tendrá que tener cargado para las importaciones
los siguientes módulos:

import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.models import Sequential, Model
from tensorflow.keras.layers import Conv2D

La Versión de Python en mi ordenador es: Python 3.8.10.
****************************************************************************************
#Ejecución:python3 Aula_18_Feb_24.py
Imágen de perfil

Generador de gifs a partir de video (nueva version)


Python

Actualizado el 20 de Febrero del 2024 por Antonio (75 códigos) (Publicado el 29 de Enero del 2024)
276 visualizaciones desde el 29 de Enero del 2024
Programa para generar gifs animados a partir de vídeos, que se ejecuta en la línea de comandos.
ARGUMENTOS:
-src/--source: Nombre del vídeo original (obligatorio).
-dest/--destination: Nombre del archivo a generar (opcional).
-sz/--size: Tamaño en porcentaje del gif respecto al vídeo original (opcional).
-shw/--show: Muestra resultado en ventana emergente al finalizar el proceso de generado (opcional).
-st/--start: Segundo inicial para gif (opcional).
-e/--end: Segundo final (opcional).
-spd/--speed: Velocidad relativa de la animación (opcional)

PARA CUALQUIER DUDA U OBSERVACIÓN, USEN LA SECCIÓN DE COMENTARIOS.

imagge
Imágen de perfil

Red-CNN Detección de bordes


Python

Publicado el 19 de Febrero del 2024 por Hilario (120 códigos)
170 visualizaciones desde el 19 de Febrero del 2024
Figure_1
Figure_2

Los kernels Sobel son filtros utilizados comúnmente en procesamiento de imágenes para realizar operaciones de convolución, especialmente en el contexto de detección de bordes. Estos filtros están diseñados para resaltar cambios rápidos en la intensidad de los píxeles en una imagen, lo que generalmente indica la presencia de bordes.

El operador Sobel consiste en dos kernels, uno para la detección de cambios horizontales y otro para cambios verticales. Estos kernels son matrices pequeñas que se aplican a la imagen mediante la operación de convolución. Los kernels Sobel comúnmente utilizados son los siguientes:

Kernel Sobel para detección de bordes horizontales (kernel_sobel_x):

[ -1, 0, 1]
[ -2, 0, 2]
[ -1, 0, 1]

Kernel Sobel para detección de bordes verticales (kernel_sobel_y):

[ 1, 2, 1]
[ 0, 0, 0]
[-1, -2, -1]

La operación de convolución implica deslizar estos kernels sobre la imagen original, multiplicando los valores de los píxeles en la región correspondiente del kernel y sumándolos para obtener un nuevo valor en la posición central. Este proceso se repite para cada píxel en la imagen, generando así dos nuevas imágenes filtradas: una resaltando cambios horizontales y otra resaltando cambios verticales.

La magnitud de los bordes se calcula combinando las respuestas horizontales y verticales mediante una fórmula de magnitud Euclidiana.

Este resultado proporciona una representación de la intensidad de los bordes en la imagen original, lo cual es útil para tareas como detección de contornos. En el código que compartiste anteriormente, estos kernels Sobel se utilizan para realizar la detección de bordes en la imagen cargada.


Este programa en Python: python3 Aula_28_bordes_CNN.py, realiza la detección de bordes en una imagen utilizando el operador Sobel. Aquí tienes una explicación paso a paso:

Cargar la imagen:
Utiliza la biblioteca OpenCV (cv2) para cargar una imagen desde la ruta "/home/margarito/python/tulipanes.jpeg".
Verifica si la carga de la imagen fue exitosa.

Convertir la imagen a formato RGB:
Utiliza la función cv2.cvtColor para convertir la imagen cargada (en formato BGR) a formato RGB.
Muestra la imagen original utilizando la biblioteca matplotlib.

Definir los kernels Sobel:
Define dos kernels Sobel, uno para la detección de bordes horizontales (kernel_sobel_x) y otro para la detección de bordes verticales (kernel_sobel_y).

Aplicar los filtros Sobel:
Utiliza la función cv2.filter2D para aplicar los filtros Sobel a la imagen original, obteniendo dos imágenes resultantes (imagen_bordes_x e imagen_bordes_y), que representan los bordes horizontales y verticales, respectivamente.

Calcular la magnitud de los bordes:
Calcula la magnitud de los bordes combinando las imágenes resultantes de los filtros Sobel mediante la fórmula de la magnitud Euclidiana.

Verificar si hay datos válidos en la matriz antes de normalizar:
Antes de normalizar la magnitud de los bordes, verifica si hay datos válidos en la matriz utilizando np.any.

Convertir a tipo de datos float32 antes de normalizar:
Convierte la matriz de magnitud de bordes a tipo de datos float32. Esto es necesario para evitar problemas de normalización con tipos de datos no compatibles.

Normalizar la imagen:
Utiliza el método de normalización para escalar los valores de la magnitud de los bordes al rango [0, 1]. Esto es importante para visualizar correctamente la imagen de bordes.

Mostrar la imagen con bordes:
Utiliza plt.imshow para mostrar la imagen resultante de la detección de bordes en escala de grises.
Muestra un título indicando que se ha aplicado el operador Sobel para la detección de bordes.

Manejar casos donde la matriz de magnitud de bordes está vacía:
Si la matriz de magnitud de bordes está vacía (todos los elementos son cero), imprime un mensaje indicando que la matriz está vacía o no contiene datos válidos.

En resumen, este programa carga una imagen, aplica el operador Sobel para detectar bordes y muestra la imagen resultante de la detección de bordes. Además, maneja casos donde la matriz de magnitud de bordes no contiene datos válidos.
Imágen de perfil

Visor de gráficos financieros.


Python

estrellaestrellaestrellaestrellaestrella(2)
Actualizado el 12 de Febrero del 2024 por Antonio (75 códigos) (Publicado el 7 de Julio del 2021)
8.863 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

Aplicación para ocultar información de texto en imágenes o fotografías (nueva versión).


Python

estrellaestrellaestrellaestrellaestrella(1)
Actualizado el 30 de Enero del 2024 por Antonio (75 códigos) (Publicado el 26 de Marzo del 2021)
12.212 visualizaciones desde el 26 de Marzo del 2021
Aplicación para codificar y decodificar mensajes de texto en imágenes.

La imagen se selecciona mediante el botón "SEARCH".
En el modo "Encode" el texto a ocultar se introduce en el espacio superior. (el programa generará un nuevo archivo de imagen cuyo nombre tendrá el prefijo "encoded_" delante del título del archivo original.
En el modo "Decode" el texto oculto se muestra en el espacio superior.

PARA CUALQUIER DUDA U OBSERVACIÓN USEN LA SECCIÓN DE COMENTARIOS.
stgp

Repositorio en GitHub:
https://github.com/antonioam82/Steganography
Imágen de perfil

Generador de contraseñas.


Python

estrellaestrellaestrellaestrellaestrella(3)
Actualizado el 30 de Enero del 2024 por Antonio (75 códigos) (Publicado el 2 de Agosto del 2021)
8.894 visualizaciones desde el 2 de Agosto del 2021
Programa para generar contraseñas de forma aleatoria, de hasta 50 caracteres. Cuenta con un campo "LENGTH" para especificar la longitud de la contraseña, un campo "MIN LOWERCASE" para especificar el número mínimo de caracteres en minúsculas, un campo "MIN UPPERCASE" para el número mínimo de caracteres en mayúsculas y un campo "MIN NUMBERS" para especificar el número mínimo de caracteres numéricos.
PARA CUALQUIER DUDA U OBSERVACIÓN USEN LA SECCIÓN DE COMENTARIOS.
pg
Imágen de perfil

Visor de gráficos financieros (nueva versión)


Python

estrellaestrellaestrellaestrellaestrella(1)
Actualizado el 30 de Enero del 2024 por Antonio (75 códigos) (Publicado el 18 de Abril del 2022)
3.134 visualizaciones desde el 18 de Abril del 2022
Programa para mostrar el precio de cierre, apertura, máximo y mínimo de las acciones de un activo para un determinado periodo de tiempo. También incluye representación de 'bandas de bollinger' y la media movil de 20 sesiones. Para mostrar la gráfica correspondiente a la información deseada, hacer click en el botón 'SHOW GRAPH'. Para cualquier duda u observación, utilicen la sección de comentarios.
fg
Imágen de perfil

Función Softmax


Python

Publicado el 30 de Enero del 2024 por Hilario (120 códigos)
201 visualizaciones desde el 30 de Enero del 2024
*******************************************************************************************************************
Figure_1
Figure_2
Figure_3
Figure_4
Figure_5
Figure_6

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

Ejercicios:Aula_28_Softmax.py - Aula_28_softmax_pooling.py

Proponemos dos ejemplos en los utilizamos la función softmax, en una sencilla red convolucional CNN
En el primer ejemplo lo hacemos sin aplicar maxpooling, en el segundo ejemplo lo hacemos aplicando maxpooling

La función Softmax toma un vector de logits y produce una distribución de probabilidad sobre las clases. Esto es útil en problemas de clasificación, ya que permite interpretar las salidas de la red como la probabilidad de que una entrada pertenezca a cada clase posible. La clase con la probabilidad más alta se considera la predicción final de la red. Este enfoque es especialmente útil en problemas de clasificación multiclase, como el reconocimiento de dígitos en el conjunto de datos MNIST.


La función Softmax se utiliza para calcular probabilidades finales en el contexto de clasificación. Después de aplicar Softmax a los logits (las salidas de la red antes de aplicar ninguna función de activación en la capa de salida), obtienes un conjunto de valores que representan las probabilidades de pertenencia a cada clase posible.

Estas probabilidades están normalizadas de manera que sumen 1. Cada valor indica la probabilidad estimada de que la entrada pertenezca a la clase correspondiente. La clase con la probabilidad más alta se considera la predicción final del modelo.

Entonces, en resumen, Softmax toma los logits y los convierte en una distribución de probabilidad sobre las clases, lo que facilita la interpretación y la toma de decisiones al seleccionar la clase con la probabilidad más alta como la predicción final del modelo.

La aplicación de la función Softmax generalmente se realiza en la capa de salida de la red neuronal, justo antes de tomar la decisión final sobre la clase a la que pertenece la entrada. En términos de programación, esto se realiza comúnmente como parte de la definición del modelo en el código.
********************************************************************************************************************

Para realizar este ejercicio tomamos datos MNIST.
MNIST es un conjunto de datos ampliamente utilizado en el campo de la visión por computadora y el aprendizaje profundo. Este conjunto de datos consiste en imágenes en escala de grises de dígitos escritos a mano (0 al 9), cada una de 28x28 píxeles. MNIST se utiliza comúnmente como un punto de partida para probar y desarrollar algoritmos de reconocimiento de imágenes utilizando redes neuronales convolucionales.

El objetivo típico es entrenar un modelo para clasificar correctamente las imágenes en sus respectivas categorías de dígitos. Muchos investigadores y desarrolladores utilizan MNIST como una especie de "Hello World" para la visión por computadora, ya que proporciona un caso de prueba relativamente simple pero efectivo para evaluar el rendimiento de modelos de aprendizaje profundo en tareas de clasificación de imágenes.
********************************************************************************************************************
Ejercicio realizado bajo plataforma Linux.
Ubuntu 20.04.6 LTS

---------------------------------------------------------------
Ejecución bajo consola Linux:
python3 Aula_28_softmax_pooling.py
python3 Aula_28_softmax_pooling.py

--------------------------------------------------------------------
Se deberá tener cargado en el sistema estos módulos:
import tensorflow as tf
from tensorflow.keras import layers, models
from tensorflow.keras.datasets import fashion_mnist
import matplotlib.pyplot as plt
-------------------------------------------------------------------
Para que vustro ordenador no produzca desbordamiento:Instrucción ilegal (`core' generado)

Vuestro ordenador deberá tener una cpu que soprte AVX (Advanced Vector Extensions) que es una extensión de instrucciones introducida por Intel y AMD en sus procesadores para realizar operaciones de manera más eficiente, especialmente en tareas que involucran cálculos en paralelo. Cuando se dice que una CPU "soporta AVX", significa que es capaz de ejecutar las instrucciones AVX.

Las instrucciones AVX permiten realizar operaciones en vectores más grandes de datos simultáneamente, lo que puede mejorar significativamente el rendimiento en aplicaciones que están optimizadas para utilizar estas extensiones. Este tipo de instrucciones son particularmente beneficiosas en tareas intensivas en cálculos, como aquellas encontradas en aplicaciones científicas, de inteligencia artificial, gráficos 3D y procesamiento de señales, entre otras.

En el contexto de programación y desarrollo de software, si un procesador es compatible con AVX, los desarrolladores pueden aprovechar estas instrucciones para optimizar sus programas y mejorar el rendimiento en hardware que admite esta tecnología. Sin embargo, es importante destacar que no todos los procesadores admiten AVX y que la capacidad de aprovechar estas instrucciones depende del soporte tanto del hardware como del software.

*******************************************************************************************************************
Si vuestra CPU, no cubre estos requisitos, también se pueden ejecutar con Google Colab.
******************************************************************************************************************
Imágen de perfil

ImageDataGenerator.


Python

Publicado el 23 de Enero del 2024 por Hilario (120 códigos)
251 visualizaciones desde el 23 de Enero del 2024
palomas
descarga

********************************************************************************************************************
En este breve ejercicio, pretendo explicar algunas dudas sobre la utilizacion de ImageDataGenerator.
Esta función se utiliza en las redes convolucionales, para nodificar los parámetros o apariencia de las imagenes
utilizadas para el training, con el propósito principal de mejorar el rendimiento y la generalización del modelo mediante el aumento de datos y la normalización.

Aquí están los objetivos clave:
--------------------------------------

Aumento de Datos para Mejor Generalización:

El aumento de datos implica aplicar transformaciones aleatorias a las imágenes durante el entrenamiento, como rotación, cambio de escala, volteo horizontal, etc. Este proceso aumenta la diversidad del conjunto de datos, permitiendo que el modelo vea variaciones de las imágenes originales. Como resultado, la CNN se vuelve más robusta y generaliza mejor a nuevas imágenes que puede encontrar durante la inferencia.

Prevención de Sobreajuste (Overfitting):

El sobreajuste ocurre cuando un modelo aprende demasiado bien los detalles específicos del conjunto de entrenamiento y tiene dificultades para generalizar a datos no vistos. El aumento de datos ayuda a prevenir el sobreajuste al introducir variaciones artificiales en las imágenes de entrenamiento. Esto es crucial cuando el conjunto de datos es relativamente pequeño.

Normalización para Facilitar el Entrenamiento:

La normalización de píxeles (escalando valores a un rango específico, como [0, 1]) facilita el proceso de entrenamiento. Al tener valores de píxeles en un rango más pequeño, los gradientes durante el entrenamiento son más estables, lo que puede llevar a una convergencia más rápida del modelo.

Manejo Eficiente de Grandes Conjuntos de Datos:

Cuando trabajas con grandes conjuntos de datos que no caben completamente en la memoria, ImageDataGenerator permite cargar y procesar las imágenes de manera eficiente en lotes durante el entrenamiento. Esto es esencial para hacer frente a conjuntos de datos de tamaño considerable.
En resumen, ImageDataGenerator contribuye significativamente a mejorar la capacidad de generalización de una CNN, a hacer que el modelo sea más robusto frente a variaciones en los datos y a facilitar el proceso de entrenamiento, especialmente cuando se trata de conjuntos de datos grandes.

********************************************************************************************************************
Un ejemplo típico de argumentos pasados a ImageDataGenerator sería el siguiente:

datagen = ImageDataGenerator(
rescale=1./255, # Normalización
rotation_range=20, # Rango de rotación aleatoria
width_shift_range=0.2, # Rango de cambio horizontal aleatorio
height_shift_range=0.2, # Rango de cambio vertical aleatorio
shear_range=0.2, # Rango de cizallamiento aleatorio
zoom_range=0.2, # Rango de zoom aleatorio
horizontal_flip=True # Volteo horizontal aleatorio
)

********************************************************************************************************************
********************************************************************************************************************
Este programa ha sido editado y ejecutadoi con Google Colab.
El archivo de jemplo estaba alojado en Drive de Google Colab.


---------------------------------------------------------------------------------------------------------------------------
Imágen de perfil

Visualización de la imagen normalizada.


Python

Publicado el 22 de Enero del 2024 por Hilario (120 códigos)
127 visualizaciones desde el 22 de Enero del 2024
Sencillo_Concep_Pixel_Aula_28.py
**********************

Figure_1
Figure_12

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

Con este sencillo y diminuto ejercicio, tratamos de explicar algunas dudas conceptuales sobre el tratamiento y comprensión
del funcionamiento de los pixeles. Aula 28.
-----------------------------------------------------------------------------------------------------------------------

Definición de los valores del píxel:
------------------------------------------------
Se especifican los valores de los canales rojo, verde y azul del píxel. En este caso, son [88, 15, 108].

Visualización de la imagen sin normalización:
---------------------------------------------------------------
Se crea una imagen de 1x1 píxeles con los valores de los canales y se muestra directamente. La escala de colores refleja los valores originales sin ajustes.

Normalización de los valores de los canales:
--------------------------------------------------------------
Se normalizan los valores de los canales dividiéndolos por 255.0. Este paso es común en procesamiento de imágenes para asegurarse de que los valores estén en el rango [0, 1].

Visualización de la imagen normalizada:
--------------------------------------------------------
Se crea una nueva imagen con los valores normalizados y se muestra. La escala de colores ahora refleja los valores ajustados al rango [0, 1].

Impresión de la matriz normalizada:
--------------------------------------------------
La matriz normalizada se imprime en la consola. Esto muestra cómo los valores de los canales se han ajustado a la escala [0, 1].

En resumen, el código realiza dos visualizaciones de un píxel: una con los valores de los canales originales y otra después de normalizar esos valores para asegurarse de que estén en un rango comprensible para la visualización de colores.

Salida por consola de los pixels normalizados.


[[0.34509804 0.05882353 0.42352941]]



***********************************************************************************************
Realizado en Plataforma Linux. Ubuntu 20.04.6 LTS
Editado con Sublime text.
Ejecución:python3 Sencillo_Concep_Pixel_Aula_28.py
************************************************************************************************
Imágen de perfil

Juego de la Serpiente, en ASCII (versión con sonido)


Python

estrellaestrellaestrellaestrellaestrella(5)
Actualizado el 22 de Enero del 2024 por Antonio (75 códigos) (Publicado el 8 de Junio del 2020)
10.998 visualizaciones desde el 8 de Junio del 2020
Nueva versión del Juego de la Serpiente, en la que se ha incluido sonido y 3 archivos de audio (incluidos en la carpeta). Para usar el programa adecuadamente, simplemente hay que descomprimir la carpeta en la que se encuentra.
BOTONES:
Mover serpiente: Botónes de dirección
Pause y reanudar partida pausada : Barra espaciadora.
Finalizar partida: tecla "q"
PARA CUALQUIER PROBLEMA, NO DUDEN EN COMUNICÁRMELO.
sgm
sg6
sg4
ggggg
Imágen de perfil

Predicción más próxima. CNN


Python

Publicado el 21 de Enero del 2024 por Hilario (120 códigos)
145 visualizaciones desde el 21 de Enero del 2024
La última imagen corresponde a la EPOCH número 3.
-----------------------------------------------------------------------
Figure_2
Figure_1
Figure_3

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


MANUAL PREDICCIÓN PRÓXIMA A DECISIÓN.
------------------------------------

Ejercicio_IA_Aula_08.py
-----------------------

Este código implementa una red convolucional (CNN) utilizando el conjunto de datos CIFAR-10 para clasificación de imágenes. Aquí hay una explicación sencilla de lo que hace el ejercicio:

Carga y Preprocesamiento de Datos:
-----------------------------------------------
Importa las bibliotecas necesarias y carga el conjunto de datos CIFAR-10.
Normaliza las imágenes dividiendo los valores de píxeles por 255.
Convierte las etiquetas de clase a formato categórico.
Creación de Generadores de Datos:

Define generadores de datos para el entrenamiento y la validación, aplicando aumentación de datos en el conjunto de entrenamiento.

Definición del Modelo CNN:
-------------------------
Crea un modelo secuencial de CNN con capas convolucionales, activaciones ReLU, capas de max-pooling, una capa Flatten, capas Dense y una capa de salida con activación softmax.
Utiliza la función de pérdida 'categorical_crossentropy', el optimizador 'rmsprop' y mide la precisión durante el entrenamiento.

Entrenamiento del Modelo:
-----------------------
Entrena el modelo en varios epochs utilizando el generador de entrenamiento y el generador de validación.
Después de cada epoch, muestra algunas imágenes del conjunto de validación junto con las predicciones del modelo.

Mostrar Resultados Finales:
--------------------------
Muestra los resultados finales, incluyendo la precisión alcanzada en la última epoch.
Visualización de Imágenes en Decisiones:

Define una función (show_images_on_decision) para visualizar imágenes del conjunto de validación junto con las predicciones del modelo.

En resumen, este código implementa y entrena una CNN para clasificación de imágenes en el conjunto de datos CIFAR-10, y muestra algunas imágenes junto con las predicciones del modelo después de cada epoch de entrenamiento.

LAS BIBLIOTECAS QUE UTILIZAREMOS SERÁN LOS SIGUIENTES:
------------------------------------------------------

numpy: Módulo de la librería de matemáticas NumPy para trabajar con matrices y vectores
matplotlib: Módulo de la librería de visualización Matplotlib para crear gráficos y visualizaciones
keras.datasets: Módulo de la biblioteca Keras para cargar y trabajar con conjuntos de datos predefinidos
keras.utils: Módulo de la biblioteca Keras para convertir etiquetas de variables categóricas en matrices numéricas
keras.preprocessing.image: Módulo de la biblioteca Keras para preprocesar imágenes
keras.models: Módulo de la biblioteca Keras para crear y administrar modelos de redes neuronales
keras.layers: Módulo de la biblioteca Keras para definir y agregar capas a los modelos de redes neuronales
keras.backend: Módulo de la biblioteca Keras para acceder a las funciones y variables del backend de TensorFlow


****************************************************************************************************************
Establecimiento de parámetros:
-----------------------------
Se establecen algunos parámetros relevantes para el modelo de red neuronal:

modo: Modo de clasificación utilizado, "categorical" para multiclase o "binary" para binaria
dimension: Dimensión de las imágenes de entrenamiento (32x32 en este caso)
Carga del conjunto de datos CIFAR-10

Se carga el conjunto de datos CIFAR-10, que contiene imágenes de 60,000 objetos de 10 clases diferentes. Las imágenes se dividen en conjuntos de entrenamiento y validación.

Preprocesamiento de imágenes:
----------------------------


Las imágenes se convierten en formato float y se escalan entre 0 y 1. Además, se representan en formato categórico para la clasificación multiclase.

Generación de datos con transformación:

Se utilizan dos generadores de datos para preprocesar las imágenes durante el entrenamiento y la validación. Estos generadores aplican transformaciones como escalado, giro y volteo para aumentar la diversidad del dataset y mejorar el rendimiento del modelo.

Creación del modelo de red neuronal:
----------------------------------
Se crea un modelo de red neuronal convolucional secuencial utilizando el módulo Sequential de Keras. El modelo consta de las siguientes capas:

Capas convolucionales:
---------------------
Tres capas convolucionales con filtros de 16, 32 y 64 filtros, respectivamente. Estas capas extraen características espaciales de las imágenes.

Funciones de activación:
-----------------------
Se utiliza la función de activación ReLU después de cada capa convolucional para mejorar la selectividad de las características extraídas.

"Polinización" máxima:
-------------------
Se utiliza la capa de maxpooling después de cada capa convolucional para reducir la dimensionalidad de las representaciones espaciales sin perder información importante.

Flatten:
-------

Se utiliza una capa de aplanamiento para convertir las matrices bidimensionales de características en vectores unidimensionales.

Capas densas:
-----------
Se agregan dos capas densas con 64 y 10 neuronas, respectivamente. Estas capas representan la parte final del modelo, donde se realiza la clasificación.

Función de activación final: La última capa utiliza la función de activación softmax para generar probabilidades de pertenencia a cada una de las 10 clases.

Compilación del modelo.
**********************

Se compila el modelo definiendo las funciones de pérdida y optimizador. La función de pérdida utilizada es la entropía cruzada categórica para la clasificación multiclase, y el optimizador utilizado es el RMSprop, un algoritmo de optimización eficiente para redes neuronales convolucionales.

Entrenamiento del modelo.
***********************
Se entrena el modelo durante 5 épocas, utilizando los conjuntos de entrenamiento y validación. En cada época, el modelo se ajusta a los datos de entrenamiento y se evalúa en los datos de validación para monitorear su progreso.

Función para mostrar imágenes de decisión
****************************************
Se define una función show_images_on_decision que muestra imágenes del conjunto de validación y sus predicciones. Esta función se utiliza después de cada época para visualizar cómo está funcionando el modelo.

Resultados finales
*****************
Al final del entrenamiento, se imprimen los resultados finales, incluyendo la precisión del modelo en el conjunto de validación.

------------------------------------------------------------------------------------------------------------
El ejercicio fue realizado en una plataforma Linux.
Ubuntu 20.04.6 LTS.
Editado en Sublime text.
Ejecución bajo consola de linux:
--------------------------------------------------------------------------------------------
También se puede editar y ejecutar con GOOGLE COLAB.
********************************************************************************************************************

SALIDA DEL EJERCICIO DESPUES DE 5 CICLOS O EPOCH, CON LA PRECISIÓN OBTENIDA.
***************************************************************************

Epoch 1/5
3125/3125 [==============================] - 55s 17ms/step - loss: 1.7981 - accuracy: 0.3388 - val_loss: 1.4368 - val_accuracy: 0.4725
1/1 [==============================] - 0s 122ms/step
Epoch 2/5
3125/3125 [==============================] - 54s 17ms/step - loss: 1.5218 - accuracy: 0.4575 - val_loss: 1.3205 - val_accuracy: 0.5330
1/1 [==============================] - 0s 24ms/step
Epoch 3/5
3125/3125 [==============================] - 54s 17ms/step - loss: 1.4376 - accuracy: 0.5005 - val_loss: 1.2920 - val_accuracy: 0.5522
1/1 [==============================] - 0s 24ms/step
Epoch 4/5
3125/3125 [==============================] - 54s 17ms/step - loss: 1.4429 - accuracy: 0.5088 - val_loss: 1.4771 - val_accuracy: 0.4987
1/1 [==============================] - 0s 24ms/step
Epoch 5/5
3125/3125 [==============================] - 54s 17ms/step - loss: 1.4649 - accuracy: 0.5012 - val_loss: 1.3029 - val_accuracy: 0.5609
1/1 [==============================] - 0s 24ms/step


_____________________________________________________
| Dimension | Capa | Filtro | Precision |
_____________________________________________________
| 32 | 3 | [64] | 50.1240015 |
_____________________________________________________

Imágen de perfil

Crear modelo con datos CIFAR 10.


Python

Publicado el 20 de Enero del 2024 por Hilario (120 códigos)
217 visualizaciones desde el 20 de Enero del 2024
gato
Figure_1

PREGUNTA DEL EJERCICIO.
------------------------------------------
Considerando que tengo que entrenar mi modelo con datos Cifar 10, Guardandolo en esta ruta:'/home/margarito/python/Mi_Modulo_Hilario.h5'.

Necesito crear un test python -basandonos en el modelo:/Mi_Modulo_Hilario.h5, para determinar la clase de esta imagen que esta en esta ruta:/home/margarito/python/gato.jpg.
Para el ejercicio debes de considerar que el archivo de datos Cifar 10, abarca las siguientes clases:


clase 0: airplane
clase 1: automobile
clase 2: bird
clase 3: cat
clase 4: deer
clase 5: dog
clase 6: frog
clase 7: horse
clase 8: ship
clase 9: truck

En el ejercicio se deberá decir de que clase es la imagen del test.
También se deberá de visualizar la imagen_array), en que te basas para hacer dicha predicción.
***************************************************************************************************************
Bien, podríamos plantear una estructura básica del proyecto como sigue:

Como podría ser una estructura del Proyecto:

Proyecto_Mi_CNN/

├── cifar-10/
│ ├── data_batch_2
│ └── ...

├── src/
│ ├── __init__.py
│ ├── train_model.py
│ └── test_model.py

└── Mi_Modulo_Hilario.h5

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

Para descargar los datos de imagenes Cifar 10, podeis utilizar este enlace:
https://www.cs.toronto.edu/~kriz/cifar.html

Se abrirá un pequeño manual explicativo, y desde el mismo se verán todas las opciones de descarga,
así como el tipo de datos para generar modelos que abarca Cifar 10.
*******************************************************************************************************************
Este ejercicio ha sido realizado bajo platadorma Linux.
Ubuntu 20.04.6 LTS.
Editado con sublime Text.
-------------------------------------------------------------------------------------------------------------
Para la ejecución correcta del programa en Python debereis tener cargadas para importar,
estas librerías:

import tensorflow as tf
from tensorflow.keras.preprocessing import image
from tensorflow.keras.models import load_model
import numpy as np
import matplotlib.pyplot as plt
Imágen de perfil

Descenso de gradiente tipo:RMSprop


Python

Publicado el 17 de Enero del 2024 por Hilario (120 códigos)
172 visualizaciones desde el 17 de Enero del 2024
Figure_2
Figure_1




En el ejercicio: 106, en la línea de codigo referente a la compilacion del modelo:
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy'])
aparece como paso a la función esta igualdad: optimizer='rmsprop'.

A continuación en el ejercicio: Aula-28_RMSprop.py, explicamos un poco este tipo de descenso de gradiente aplicado
para optimizar el modelo.

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

En el descenso de gradiente normal, la tasa de aprendizaje (cuánto nos movemos en la dirección opuesta al gradiente) es constante. Pero a veces, puede ser beneficioso ajustar esa tasa de aprendizaje.

RMSprop hace lo siguiente:

Miramos los gradientes pasados:

RMSprop lleva un registro de cuán grandes fueron los gradientes que hemos visto antes.
Adaptamos la tasa de aprendizaje:

Si los gradientes han sido grandes, RMSprop reduce la tasa de aprendizaje.
Si los gradientes han sido pequeños, RMSprop aumenta la tasa de aprendizaje.
Evitamos divisiones por cero:

RMSprop utiliza un pequeño número llamado

ϵ para evitar divisiones por cero.
En resumen:

RMSprop ajusta automáticamente la tasa de aprendizaje para cada parámetro en función de cómo fueron los gradientes anteriores.
Esto ayuda a converger más rápido en problemas donde las dimensiones de las características pueden variar mucho.
Imagina que estás en una montaña (la función de pérdida) y quieres bajar (minimizar la pérdida). RMSprop te ayuda a ajustar la rapidez con la que te mueves hacia abajo dependiendo de lo empinada que sea la pendiente. Si la pendiente es pronunciada, te mueves más despacio; si es suave, te mueves más rápido. ¡Es como ajustar el paso mientras caminas
hacia abajo para no caerte!
*****************************************************************************************

SALIDA RELACIÓN ITERACIÓN Y COSTO:
***************************************************
Paso 1: x = 8.0000, y = 73.8936, Costo = 73.8936
Paso 2: x = 7.9002, y = 72.4027, Costo = 72.4027
Paso 3: x = 7.8004, y = 70.8319, Costo = 70.8319
Paso 4: x = 7.7006, y = 69.1814, Costo = 69.1814
Paso 5: x = 7.6007, y = 67.4522, Costo = 67.4522
Paso 6: x = 7.5009, y = 65.6462, Costo = 65.6462
Paso 7: x = 7.4010, y = 63.7664, Costo = 63.7664
Paso 8: x = 7.3011, y = 61.8168, Costo = 61.8168
Paso 9: x = 7.2012, y = 59.8021, Costo = 59.8021
Paso 10: x = 7.1014, y = 57.7281, Costo = 57.7281
Paso 11: x = 7.0015, y = 55.6011, Costo = 55.6011
Paso 12: x = 6.9015, y = 53.4284, Costo = 53.4284
Paso 13: x = 6.8016, y = 51.2177, Costo = 51.2177
Paso 14: x = 6.7017, y = 48.9775, Costo = 48.9775
Paso 15: x = 6.6018, y = 46.7167, Costo = 46.7167
Paso 16: x = 6.5019, y = 44.4446, Costo = 44.4446
Paso 17: x = 6.4020, y = 42.1708, Costo = 42.1708
Paso 18: x = 6.3021, y = 39.9052, Costo = 39.9052
Paso 19: x = 6.2022, y = 37.6576, Costo = 37.6576
Paso 20: x = 6.1023, y = 35.4382, Costo = 35.4382
Paso 21: x = 6.0024, y = 33.2567, Costo = 33.2567
Paso 22: x = 5.9024, y = 31.1228, Costo = 31.1228
Paso 23: x = 5.8025, y = 29.0461, Costo = 29.0461
Paso 24: x = 5.7027, y = 27.0356, Costo = 27.0356
Paso 25: x = 5.6028, y = 25.0999, Costo = 25.0999
Paso 26: x = 5.5029, y = 23.2470, Costo = 23.2470
Paso 27: x = 5.4030, y = 21.4844, Costo = 21.4844
Paso 28: x = 5.3032, y = 19.8188, Costo = 19.8188
Paso 29: x = 5.2034, y = 18.2561, Costo = 18.2561
Paso 30: x = 5.1036, y = 16.8016, Costo = 16.8016
Paso 31: x = 5.0038, y = 15.4594, Costo = 15.4594
Paso 32: x = 4.9041, y = 14.2328, Costo = 14.2328
Paso 33: x = 4.8044, y = 13.1243, Costo = 13.1243
Paso 34: x = 4.7048, y = 12.1353, Costo = 12.1353
Paso 35: x = 4.6053, y = 11.2660, Costo = 11.2660
Paso 36: x = 4.5060, y = 10.5160, Costo = 10.5160
Paso 37: x = 4.4069, y = 9.8837, Costo = 9.8837
Paso 38: x = 4.3082, y = 9.3663, Costo = 9.3663
Paso 39: x = 4.2102, y = 8.9604, Costo = 8.9604
Paso 40: x = 4.1135, y = 8.6612, Costo = 8.6612
Paso 41: x = 4.0196, y = 8.4625, Costo = 8.4625
Paso 42: x = 3.9329, y = 8.3549, Costo = 8.3549
Paso 43: x = 3.8667, y = 8.3192, Costo = 8.3192
Paso 44: x = 3.8413, y = 8.3156, Costo = 8.3156
Paso 45: x = 3.8379, y = 8.3156, Costo = 8.3156
Paso 46: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 47: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 48: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 49: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 50: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 51: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 52: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 53: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 54: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 55: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 56: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 57: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 58: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 59: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 60: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 61: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 62: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 63: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 64: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 65: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 66: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 67: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 68: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 69: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 70: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 71: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 72: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 73: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 74: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 75: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 76: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 77: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 78: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 79: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 80: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 81: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 82: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 83: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 84: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 85: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 86: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 87: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 88: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 89: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 90: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 91: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 92: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 93: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 94: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 95: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 96: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 97: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 98: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 99: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 100: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 101: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 102: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 103: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 104: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 105: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 106: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 107: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 108: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 109: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 110: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 111: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 112: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 113: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 114: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 115: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 116: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 117: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 118: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 119: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 120: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 121: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 122: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 123: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 124: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 125: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 126: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 127: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 128: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 129: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 130: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 131: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 132: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 133: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 134: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 135: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 136: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 137: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 138: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 139: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 140: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 141: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 142: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 143: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 144: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 145: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 146: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 147: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 148: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 149: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 150: x = 3.8375, y = 8.3156, Costo = 8.3156
Paso 151: x = 3.8375, y = 8.3156, Costo = 8.3156
[Finished in 4.5s]

*****************************************************************************************
Ejercicio realizado en plataforma Linux, concretamente: Ubuntu 20.04.6 LTS.
Editado en Sublime text.

Ejecución:python3 Aula-28_RMSprop.py

Se deberá tener cargado en el sistema:
import numpy as np
import matplotlib.pyplot as plt
Imágen de perfil

Crear Módulo Transferencia Aprendizaje.


Python

Publicado el 16 de Enero del 2024 por Hilario (120 códigos)
150 visualizaciones desde el 16 de Enero del 2024
python3 Repaso_Aula_28.py
*************************


Ejercicio sencillo para Aula-28.
*******************************
Queremos generar un módulo para posteriores entrenamientos utilizando transferencia de aprendizaje.

A nuestro módulo lo llamaremos:MODULO-HIM.h5
Lo guardaré en esta ruta de mi ordenador: save_path = "/home/margarito/python/MODULO-HIM.h5"

Suponemos que en nuestro ordenador tenemos las imagenes de entrenamiento, que deberán guardar básicamente según este este esquema. En el caso de mi ordenador sería el siguiente:

/home/margarito/python/HIM/
|-- train/
| |-- dog/
| | |-- imagen1.jpg
| | |-- imagen2.jpg
| | |-- ...
| |
| |-- flores/
| | |-- imagen1.jpg
| | |-- imagen2.jpg
| | |-- ...
| |
| |-- ...
|
|-- test/
| |-- dog/
| | |-- imagen1.jpg
| | |-- imagen2.jpg
| | |-- ...
| |
| |-- flores/
| | |-- imagen1.jpg
| | |-- imagen2.jpg
| | |-- ...
| |
| |-- ...


Epoch.
*******
Epoch 1/10
2/2 [==============================] - 3s 615ms/step - loss: 0.6765 - accuracy: 0.5472
Epoch 2/10
2/2 [==============================] - 2s 875ms/step - loss: 0.6293 - accuracy: 0.5660
Epoch 3/10
2/2 [==============================] - 2s 566ms/step - loss: 0.5859 - accuracy: 0.6415
Epoch 4/10
2/2 [==============================] - 2s 880ms/step - loss: 0.5429 - accuracy: 0.8491
Epoch 5/10
2/2 [==============================] - 2s 571ms/step - loss: 0.5003 - accuracy: 0.8679
Epoch 6/10
2/2 [==============================] - 2s 564ms/step - loss: 0.4556 - accuracy: 0.8868
Epoch 7/10
2/2 [==============================] - 2s 889ms/step - loss: 0.4191 - accuracy: 0.8868
Epoch 8/10
2/2 [==============================] - 2s 864ms/step - loss: 0.3714 - accuracy: 0.8491
Epoch 9/10
2/2 [==============================] - 2s 884ms/step - loss: 0.3436 - accuracy: 0.9057
Epoch 10/10
2/2 [==============================] - 2s 869ms/step - loss: 0.3403 - accuracy: 0.9245



*************************************************************************************************************
El ejercicio es realizado en plataforma Linux.
Concretamente en:Ubuntu 20.04.6 LTS.
Fue editado con:Sublime text.
Ejecución bajo consola Linux:python3 Repaso_Aula_28.py

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