Entradas

Mostrando entradas de 2021

La URL de AMP de referencia no es de una página AMP

Imagen
Preparando las páginas AMP del dominio bio-farma.es , me encontré con este error, y perdí muchísimas horas buscando la solución. En Google únicamente tenía de referencia el mensaje que me daba el soporte de google: https://support.google.com/webmasters/answer/7478053?hl=es Una página canónica incluye como referencia de AMP una página que no es AMP. Consulta cómo debería hacerse referencia a páginas AMP en páginas que no son AMP. No encontraba nada de nada, pero al final encontré la solución. Lo primero que hay que hacer es ver si Google detecta la página como AMP. Google dijo que sí, así que lo lógico era que en la página canonical apuntara a esta página AMP directamente,.... pero NO. Google dijo que no, todo y que la página de destino era bien reconocida como AMP. La url de test de páginas AMP: https://search.google.com/test/amp?utm_source=support.google.com/webmasters/&utm_medium=referral&utm_campaign=%207320015 Y el sitio del proyecto de páginas AMP:  https://amp.dev/ Existe

Cuando la tienda online aprovecha la inteligencia artificial. Bio-farma.es

Imagen
  Cuando una tienda online de Parafarmacia aprovecha el potencial de los servidores Linux, PHP, MySQL y cómo no, de la Inteligencia Artificial Quiero tener una tienda online. Así se presenta normalmente el cliente, entonces vienen las preguntas: ¿Quieres una estándard como Prestashop, Oscommerce, Magento, Woocommerce, o incluso un wordpress o prefieres una tienda a medida? La gente no sabe qué hacer, pero en la mayoría de los casos se deciden por el precio, no por la capacidad que le pueda ofrecer la tienda online, así que el cliente finalmente se conforma con tener una tienda online y ya está, a esperar que vengan los clientes. Mi recomendación, al ser posible, siempre es la misma. Realizar una tienda online a medida, pero no todo el mundo se lo puede permitir. bio-farma.es es un ejemplo de una tienda online especializada en Parafarmacia que ha sabido aprovechar todo el potencial de las nuevas tecnologías, incluso de la aplicación de la Inteligencia Artificial para su provecho. El p

PHP-libplot: Matplotlib-PyPlot & Numpy en puro PHP

Imagen
  PHP-libplot: Matplotlib-PyPlot & Numpy en PHP Librería en PHP al estilo de Matplotlib, pyplot & numpy. PHP-libplot v.1.0.0 es una librería escrita en puro PHP que emula el funcionamiento de Matplotlib escrita en Python , consiguiendo un resultado muy parecido, de hecho casi indetectable, al original de Pyplot y añadiendo funciones matemáticas de Numpy , muy utilizadas en Machine Learning , como linspace o arraypow, pero como digo, utilizando únicamente código PHP, sin necesidad de tener Python instalado en el sistema ya que esta librería es nativa y no utiliza absolutamente nada de código python. La librería para generar gráficas de barras , gráficas de líneas , hacer scatters u obtener pairplot es muy utilizada para ver los datos de los datasets en los modelos de Machine Learning, antes de realizar el aprendizaje profundo, ya que hay que modificar los datos antes de empezar el deep learning.   El objetivo de haber escrito esta librería en puro PHP en lugar de utiliza

Graficos de barra, gráficos de líneas, MatPlotLib en PHP

Imagen
  Generar gráficos de barra, gráficos de líneas en php MatPlotLib  es una herramienta fantástica escrita para Python, para generar gráficos cuando realizamos Machine Learning. Nos ayuda muchísimo en el momento de entender nuestros datos antes de introducirlos en nuestras redes neuronales para identificar problemas y modificarlos gracias a esta ayuda visual. El problema que nos encontramos muchos programadores es que utilizamos servidores compartidos en la nube y no nos dejan mucho margen para instalar apicaciones de terceros, así que, cómo podemos obtener estos resultados o algo muy aproximado utilizando PHP? La solución es GRAPH-PHP . Una herramienta que he desarrollado para generar gráficos al estilo de  MatPlotLib . Aún está en una fase muy primeriza, pero pronto podré ampliar esta herramienta con nuevas características. Todo y así ya se puede utilizar y los resultados son muy buenos. Os presento algún ejemplo que veréis muchas veces en  MatPlotLib , realizados con esta herramienta

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