Entradas

Mostrando entradas de 2021

Numpy linspace() en php, así como elevar un array con pow()

Imagen
  Funciones linspace() o elevar arrays ya disponibles en PHP He liberado una clase en PHP que puede realizar cálculos de potencias en arrays o generar un array ordenado entre dos números con un número de muestras en concreto. Esta última función es la función de numpy linspace(). Estas funciones se suelen utilizar en Python en el Machine Learning, pero en PHP escasean, así que.... me las he inventado y ahora ya existen 😁. Un ejemplo muy claro de su uso sería en el siguiente código:  // NOTE: The graph library will be published soon. this example is only to see the use of Linspace() & pow()  // We assume that $ax in PHP is a graph_object, and create an ext_op_ml object in $m variable   // PYTHON PYPLOT   x = np.linspace(0, 2, 100)   ax.plot(x, x, label='linear')   # Plot some data on the axes.   ax.plot(x, x**2, label='quadratic')   # Plot more data on the axes...   ax.plot(x, x**3, label='cubic')  # ... and some more.   // PHP   $m = new ext_op_ml();   $x =

Leer Temperatura CPU, memoria, carga de sistema en PHP

Imagen
  Como leer la temperatura de la CPU/GPU, Carga de sistema, Uso de memoria, uso de disco, .... desde PHP A veces nos encontramos con la necesidad de conocer estos parámetros, como por ejemplo cuando estamos ejecutando nuestros backpropagations en procesos de Machine Learning. Estos procesos consumen tanta CPU o GPU que el sistema se sobrecalienta, y es imprescindible conocer en todo momento la temperatura de la CPU para no provocar un desastre. Por ejemplo. Qué pasa cuando no se controla la temperatura y se deja que el proceso siga su curso hasta poner al rojo vivo la CPU? pues que al llegar a los 100ºC 🌡 el sistema se para bruscamente.... y os lo digo por experiencia 😅. Creé esta clase para ayudarme en los procesos de Machine Learning en PHP, pero decidí liberarla porque la verdad es que hace muchísimas cosas más, como conocer el uso de la memoria, del disco, estado de carga de la CPU, uptime, versión del sistema, saber el número de cpu's, ... Esta clase se puede utilizar para

Manejo de ficheros .CSV en paralelo. Datasets Machine Learning

Imagen
  Gestión de ficheros .CSV en paralelo para procesos de machine learning Cuando leemos datos de ficheros .CSV que van a ir a parar a modelos de Machine Learning, debemos de tener nuestro dataset bien preparado: - Disponer de un dataset para Train (aprendizaje) - Disponer de un dataset validación - Disponer de un dataset para test. Hay muchas veces que disponemos de dos datasets, uno para realizar os inputs y otro para los resutados 'desired', que són los datos deseados. Una de las tareas que debemos hacer es separar estos datasets en as partes anteriormente nombradas (train, validation & test). He reaizado una clase en PHP lamada CSV PAIR FILE. La podéis descargar desde  https://www.phpclasses.org/package/12166-PHP-Manage-values-for-training-machine-learning-system.html o desde  https://github.com/vivesweb/csv_pair_file Esta clase se encarga de realizar estas separaciones de datos automáticamente en los ficheros a modo paralelo, para que concuerden ordenadamente los datos

1er premio internacional en innovación PHP. Imprimir etiquetas en PDF

Imagen
  Premio a la innovación en PHP. Clasificado en primer lugar. Clase Imprimir etiquetas en PDF Como es de costumbre, de todas las clases enviadas a phpclasses.org , se seleccionan cada mes las clases nuevas que tienen algún punto en especial en lo que respecta a la innovación. Este reconocido portal recoge código que es enviado por los propios programadores de todo el 'mundo mundial'. Después de un proceso de votación, al mes siguiente, aparecen los ganadores. El mes pasado quedé en primer lugar por partida doble . Este mes he quedado también en primera posición, con la clase para imprimir etiquetas en PHP, genearando un documento PDF con ellas. No está de más que reconozcan el trabajo que haces de alguna manera, y phpclasses.org lo hace muy bien. Este mes me han nominado dos clases más, y para el que viene.... bueno, ya veremos, porque algo grande viene....

Convertir imágenes, crear previews de pdf's o PSD, thumbnails, ....

Imagen
  Manejo de imágenes en PHP. Cambiar de formato a webp u otros, extraer imágenes de pdf o PSD, cambiar tamaño o aplicar filtros Esta clase en PHP os ayudará enormemente en el proceso del tratamiento de imágenes. Muchas veces necesitamos realizar tareas básicas como redimensionar en bloques las imágenes a unos tamaños dados, pasarlas a blanco y negro o escala de grises, hacer un mirror, o incluso transformar una copia de la imagen original al formato que tanto le gusta a google, que es el formato webp . Muchas veces las funciones las tenemos disponibles en php, pero hay que realizar varios pasos para llegar a un resultado satisfactorio. Esta clase está optimizada para que con muy pocas líneas de código podamos realizar la tarea rápidamente y con funciones muy útiles y que no están incluidas por defecto en el lenguaje original PHP, como el filtro de tono SEPIA. Otro uso muy interesante es el poder extraer una imagen del contenido de un pdf o de un psd. Esto nos puede servir para crear pr

¿Qué es el DESCENSO DEL GRADIENTE? Explicado por el Volcán de La Palma

Imagen
 El DESCENSO DEL GRADIENTE en el Backpropagation del Machine Learning Los modelos de aprendizaje profundo (o deep learning), se basan en encontrar la tasa de error de cada cálculo realizado en cada una de las neuronas y corregirlo para llegar al valor más bajo de la función e ir aprendiendo cada vez más, para predecir así un mejor resultado con los cálculos que se le facilite en un futuro. Para realizarlo, hay que 'mover' unas características de cada neurona y ajustarla, y para encontrar el error cometido y corregirlo, se utilizan fórmulas matemáticas como las aplicadas en el descenso del gradiente. Estos días, el Volcán Cumbre Vieja de La Palma tiene muchísimo protagonismo en las notícias y vidas de todo el mundo, ya que hace unos días ha entrado en erupción ( y a día de hoy continúa ), pero como tengo una cabeza que no para, mi subconsciente ha encontrado una manera muy fácil de explicar qué es el descenso del gradiente en el Backpropation, simplemente observando boquiabierto

Visualización de datos en gráficos de barra. Entorno CLI-PHP. Encuentra Outliers

Imagen
  Visualización de datos en gráficos de barra para ayudar en la búsqueda de Outliers La limpieza de los datasets en los procesos anteriores al Deep Learning son esenciales. Encontrar los Outliers (o datos que están fuera de lo común), es primordial para rectificarlos y conseguir unos datos homogéneos. Si no los detectamos o no los regularizamos, nuestras redes neuronales tendrán serios problemas para aprender correctamente, ya que un solo dato de estos puede hacer 'volverse loco' a nuestro modelo y no servir de nada. Ya os comenté en un artículo anterior la importancia que tenía este paso, y es necesario de disponer las herramientas adecuadas. Existen algunas que son de pago y privativas. Yo me he decantado por creármela por mi mismo y liberar el código fuente para que alguien más la pueda aprovechar. Se puede utilizar PHP para realizar Machine Learning . En PHP, cuando se realizan las tareas de búsqueda de errores en nuestros datasets, debemos emplear la Ingeniería de datos

Extraer propiedades de los datos .csv para saber cada dato si es string, entero, vacío, numérico, fecha, ip, ....

Imagen
Clase en php para limpiar los valores y extraer sus propiedades dentro de un .csv (tipo string, entero, decimal, vacío, fecha, .....) Hoy os traigo una clase en php que he realizado para extraer las propiedades de los datos de un fichero .csv. Esta clase es útil para el proceso de limpieza de datasets antes de utilizar las redes neuronales en machine learning. La clase se llama row-math-ml-csv y se puede descargar desde github.com o desde phpclasses.org . Con ella podemos extrar las siguientes características de cualquier valor de una fila de nuestro dataset: 'empty': El campo está vacío. No tiene ningún valor o bien contiene '-' 'empty_null': El campo contiene un valor NULL 'empty_nan': El campo contiene un valor numérico no válido NA ó NAN 'empty_anyway': Nos sirve para saber si está vació de cualquier manera anterior. Estos campos nos sirven para estar alerta si nuestro dataset contiene datos vacíos o nulos y poder actuar en ellos. 'strin

Visualización en tabla para detectar datos incorrectos y limpiar los datasets antes de realizar el Deep Learning (aprendizaje profundo) en PHP

Imagen
  Clase en PHP para visualizar la estructura de datos, preparar y limpiar el dataset antes del Deep Learning Los datos que facilitamos a nuestros modelos de redes neuronales deben de estar impecables, tal y como explicaba en el artículo de Ingeniería de datos para el Machine Learning . No vale con que le demos los datos a nuestro modelo de red neuronal tal cual lo importamos. Nos podemos encontrar con: - Campos vacíos: '' ó '-' - Campos Nulos: null - Campos numéricos erróneos: 'na' ó 'nan' - Valores numéricos 0. Puede ser que falten datos o que realmente sean correctos - Fechas que podemos separar en sub features - Otros campos que podemos separar en sub features, como por ejemplo una IP o códigos de paises 'es', 'de', 'fr',…. - Campos en texto donde el sistema no podrá aprender nada y deberemos eliminarlos o cambiarlos. En definitiva, todo se reduce en tener bajo nuestro control todos los datos, que no se nos escape un dato incoh

Ganador 2 premios internacionales a la innovación en PHP en Inteligencia Artificial Machine Learning

Imagen
  2 PREMIOS INTERNACIONALES A LA INNOVACIÓN EN PHP (System Resources & Csv Pair File). Destinadas a la Inteligencia Artificial  Las dos clases en php nominadas el mes pasado han quedado clasificadas como ganadoras en los premios de Innovación en PHP . Ambas an quedado en 1ª posición. Es todo un reconocimiento, lo que indica la calidad del código y la utilidad de ellas. No basta con escribir código y subirlo. Hay que limpiarlo, que lo pueda entender cualquier programador, utilizar al ser posible el inglés como idioma internacional para poder llegar a más programadores, generar una buena, detallada y comprensible documentación, .... Siempre hay unos estándards que habría que cumplir para hacer más fácil la programación de todo el mundo. Estas dos clases están orientadas a mejorar la usabilidad del Machine Learning & Deep Learning en PHP dentro del marco de la Inteligencia Artificial. La primera está destinada a obtener los recursos del sistema en php , como Uso y obtener la tempe

Nominadas en PHPClasses.org Imprimir Etiquetas en PDF desde PHP y Encender/Apagar Led Raspberry GPIO

Imagen
Este mes estamos de enhorabuena. Dos de las clases que publiqué en phpclasses.org han sido nominadas a los premios internacionales de innovación en PHP . Las dos librerías están bien documentadas. Recientemente hice un artículo para cada una de ellas, para Imprimir etiquetas en PDF desde PHP y para Encender/apagar LED en Raspberry GPIO . Podéis encontrar el código fuente aquí: - Imprimir etiquetas en PDF desde PHP - Encender/Apagar LED en Raspberry GPIO El mes pasado, las dos clases que publiqué en PHP y que fueron nominadas,  han sido premiadas y han quedado ambas en 1ª posición . No está mal, ¿no? 👏👏👏 Por cierto.... ya se ha abierto el período de votación ... por si queréis echar una mano😁.

Bug en PHP Spl seek SplFileObject. (Solucionado)

Imagen
Existe un bug en la función seek() de SPL  ( Standard PHP Library ) en PHP < PHP8.0.1. Aquí la solución. El bug concretamente aparece cuando hacemos un seek() del objecto SPL a la 2ª fila (índice 1). Nos devuelve la 3ª fila en lugar de la 2ª fila, y así con los posteriores índices de seek(). El bug está presente en todas las versiones anteriores a la PHP8.0.1. Los códigos de los programas que utilizamos a diario los creamos desarrolladores como yo. Muchas veces fallan a causa del uso en algún software o hardware específico. Otras veces fallan por una mala codificación. En definitiva, el hardware ha sido creado por humanos, el código lo teclean personas humanas, y como humanos que somos, podemos cometer errores también, ya sea en el hardware o en el software. La ventaja del software libre es que el código es público. Lo puedes descargar, modificar, reutilizar, etc... y por otra parte tiene la ventaja que todos los programadores se comunican entre ellos para detectar fallos, mejorar p

Importar & exportar bases de datos MySQL desde línea de comandos. Consola Linux

Imagen
  Hoy os traigo un par de comandos que os van muy bien en el momento de realizar backups y restaurar los ficheros de datos .sql en vuestras bases de datos MySQL/MariaDB. Se trata de las sentencias en bash  mysqldump & mysql PhpMyAdmin es muy buena herramienta para administrar las bases de datos, pero muchas veces se queda un poco corta cuando realizamos importaciones o exportaciones de bases de datos MySQL/MariaDB muy grandes (errores de conexión, reconexiones para volver a enviar las bases de datos, duplicidad de registros, volver a empezar, ....). Existe en Linux un par de comandos que funcionan muy bien y evitan los errores de conexión por estar demasiado tiempo esperando a que finalice la importación/exportación de las bases de datos MySQL/MariaDB. Exportar base de datos MySQL de servidor externo a fichero local .sql: mysqldump --column-statistics=0 -h NOMBRE_DE_SERVIDOR -u NOMBRE_USUARIO -p BASE_DE_DATOS > nombre_fichero_local.sql Existe algún problema intentando leer algu

Copias de seguridad en Linux RSYNC + RAID + SSH. Conceptos básicos. Evita ataques Ransomware

Imagen
He publicado un artículo en linkedin explicando un poco por encima la estructura que podemos tener en nuestra empresa para la realización de copias de seguridad. Un tema muy importante y que muchas empresas no prestan atención, hasta que pasa lo inevitable y le toca correr al informático de turno. La base es copiar los ficheros compartidos de una red Windows en un servidor Linux. Este servidor Linux queda a parte de la red, por lo que en caso de ataque ransomware, los datos no se ven afectados. No está explicado a nivel técnico, sino básico para que todo el mundo pueda entender qué es el sistema RSYNC, RAID Y SSH, qué es lo que hace cada uno de ellos, para qué sirve y en qué se puede beneficiar una empresa de su uso. Se habla también del uso de servidores separados de la red de compartición de ficheros windows para salvaguardar los datos y del uso extra de seguridad de Antivirus. El sistema puede avisar diariamente por mail sobre el proceso de la copia realizada. Se explica además el

Inteligencia Artificial aplicada a Robots. El robot que hace piruetas

Imagen
  Os dejo con un vídeo  que no deja de ser impresionante, donde podréis ver cómo está avanzando la inteligencia artificial aplicada a la robótica. Parece ser que muy pronto los podríamos tener entre nosotros para ayudar en las tareas de casa. No todo lo que se ve es inteligencia artificial, pero sin ella, este robot no sería nada. Lo que me pregunto es por qué no han entrenado a sus redes neuronales en cómo hacer una tortilla y darle la vuelta en lugar de entrenarlas para que sea él mismo el que se da la vuelta haciendo piruetas. Creo que sería más útil, y al menos serviría para algo ¿no? 😶

Clase en PHP para encender/apagar LED en Raspberry pi

Imagen
  Clase en puro PHP para encender/apagar led en Raspberry pi. Acceso directo a los puertos GPIO. He preparado una clase sencilla en PHP puro para poder, como os explicaba en el artículo anterior,  acceder directamente a los puertos GPIO desde PHP . Este acceso a los puertos GPIO se realiza directamente y de forma nativa contra el sistema, sin necesidad de usar exec(), shell_exec() o cualquier funcion de ejecución externa al lenguaje de programación PHP. El repositorio de la clase en PHP lo podéis descargar tanto en github.com como en phpclasses.org . Para utilizar la clase solo tenéis que realizar el include require_once( 'led.class.php' ); Debemos realizar el export antes de poder utilizar el puerto GPIO. La clase ya está preparada para realizar el export automáticamente con un LED individualmente o con varios. Si se utilizan varios LEDS, se pude aprovechar el sistema para que abra un solo fichero de export y un fichero unexport, común para todos los LEDS, lo que hará que sol

Raspberry Pi. Encender/Apagar LED desde PHP. Acceso directo a los puertos GPIO ultrarápido.

Imagen
  Objetivo:  Encender y apagar un led a muy alta velocidad, SIN realizar llamadas al sistema shell_exec() . Control directo de los GPIO con puro PHP. Acceso directo a los puertos GPIO con PHP nativo. No, tranquil@s. Este no es un tutorial más que te enseña a encender o a apagar un led y ya está. La misión de este artículo es la de enseñar a hacerlo con PHP de forma optimizada, accediendo directamente a los puertos GPIO sin utilizar shell_exec() para incrementar el rendimiento de nuestras aplicaciones, sobre todo en los las primeras raspberry pi que aparecieron, con una velocidad de proceso limitada, pero que, lejos de desaparecer, aún siguen funcionando tan bien como el primer día. 😀 Existen muchas maneras de utilizar los LEDS con los puertos GPIO en nuestra Raspberry Pi. Pero hoy os voy a mostrar una técnica que en PHP nativo y puro que es con muchísima diferencia la que consigue el  tiempo de respuesta más rápido  de acceso a los puertos GPIO. Lo que aquí encontraréis lo podréis ap