Análisis en profundidad

Python: qué es, para qué sirve y cómo programar con Python

¿Para qué sirve Python? Cuándo es necesario aprender a usarlo y cuándo no. Aquí están todos los secretos de un lenguaje orientado a objetos, adecuado para el desarrollo de aplicaciones distribuidas, scripts, computación numérica y pruebas de sistemas.

08 Nov 2021

Paolo Maria Innocenzi

Cyberscurity Specialist

python

Python es uno de los lenguajes de programación más populares de los últimos años. Su sintaxis clara y su legibilidad lo convierten en el lenguaje de codificación perfecto para los principiantes. Es justo asumir que la facilidad de aprendizaje de Python ha sido el potencial esencial detrás de su amplio uso. Pero esto plantea la necesidad de determinar cuándo ‘no’ es la respuesta correcta. En otras palabras, ¿cuáles son las señales claras de que Python no es el lenguaje adecuado para aprender y/o utilizar?

Qué es Python y para qué sirve (programación de e IA)

Cada vez leemos más sobre Python como un lenguaje directa o indirectamente instrumental para el machine learning, en esencia un lenguaje “para” el Machine Learning. La mayoría de los cursos de machine learning han sido escritos utilizando el lenguaje Python y la enseñanza de la codificación en su conjunto ha adoptado Python como el lenguaje a aprender, con un amplio uso en los cursos dedicados a los pequeños ordenadores como Raspberry Pi (AMD) o en otros núcleos.

Esta tendencia, unida a la multitud de grandes empresas que utilizan o muestran la utilidad de sus productos con Python, sugiere que es el principal lenguaje de programación del futuro. Básicamente, una especie de navaja suiza. La pregunta a la que pretendemos dar respuesta en esta primera parte es: ¿para qué no sirve esa “herramienta”? A continuación analizaremos los distintos campos de aplicación.

Python para la programación y el desarrollo de sitios web

Python es más que capaz de permitir el desarrollo web a gran escala. Instagram es el mayor sitio que ejecuta Django, que es un marco web de Python: un back-end. No es poca cosa, como explica el ingeniero de Instagram Zekun Li: “Empezamos a usar Python desde el principio por su sencillez, pero con los años hemos tenido que hacer muchos hacks para mantener la sencillez a medida que íbamos escalando la arquitectura.”

Dicho esto, sigue siendo el caso de que Django es un marco robusto y elegante, y por lo tanto el problema no es que le falten características. La pregunta sencilla es: ¿por qué aprender a adoptar Django cuando JavaScript sigue siendo tan dominante y permite una escalabilidad total? Los frameworks de JavaScript como React y Vue.js son muy demandados y si lo que se quiere es seguir utilizando Dyango ambos pueden hacerlo, o se puede utilizar otros back-ends como RubyOnRails. Sin embargo, dado que ambos lenguajes se basan en JavaScript, ¿por qué utilizar algo que no sea Node.js? El uso de Node.js completaría el cuadro y produciría una aplicación JavaScript full stack. Así, JavaScript sería el lenguaje que debe aprenderse hasta dominarlo por completo. Lo cual es fundamentalmente diferente, de nuevo, de argumentar que JavaScript es un lenguaje perfecto; muchos argumentarían lo contrario. Sin embargo, si estás empezando a desarrollar una web, no hay mejor opción que JavaScript.

programar-en-python

Python para el desarrollo de videojuegos (por ejemplo, con Unity)

Los usuarios de Pygame pueden encontrar este párrafo un poco contradictorio. ¿Existe una biblioteca optativa, considerada específicamente para crear juegos de ordenador en Python? Sí, la hay, y Pygame es un recurso fantástico para aprender Python y la mecánica de los juegos. Por cierto, hay que mencionar que se han escrito algunos buenos juegos en Python e incluso hay un ‘shooter’ en primera persona hecho completamente en Pygame: “Duga”, que es muy popular. Pero sin querer quitarle nada al increíble resultado de preferencia de “Duga”, podemos en cambio identificar un problema aquí: la mayoría (pero no todos) de los que quieren entrar en el desarrollo de juegos buscan “algo más”. Una plataforma sólida, con herramientas de desarrollo y un editor. La posibilidad de pasar de una pequeña idea a algo grande y más generalizado. Pero, de nuevo, el lenguaje que hemos elegido, Python, no está pensado para escalar y llegar a ofrecer incluso estas características “industriales”, al menos no tanto como pueden hacerlo los motores de juego reales como Unity y Unreal. Pero Unity se basa únicamente en C#, con un número considerable de bibliotecas encima para ayudar al desarrollo de juegos. El editor, Unity, sigue siendo un editor, una herramienta muy potente que permite la creación rápida de prototipos y un comienzo rápido para los principiantes que hacen su primer juego. Para comparar la escala y la belleza visual, Escape From Tarkov es una creación de Unity Engine para comparar con Duga.

Al igual que los tutoriales de Python de bajo nivel cubren lo esencial de la programación, los tutoriales oficiales de Unity no asumen ningún conocimiento previo de programación.

C++ tiene cierta fama de ser, si no exactamente “difícil”, sí largo y engorroso de aprender. Es cierto que hay recursos en línea para los principiantes, y el sitio web de Unreal Engine también tiene algunas herramientas estupendas para empezar. Si necesitas una prueba de que los juegos con Unreal Engine pueden tener éxito, no busques más que Fortnite. Este juego extremadamente popular, al que puedes jugar incluso en tu teléfono móvil, fue creado y optimizado con Unreal.

Los juegos que se ven así, y que se ejecutan a una resolución de 1080p con una buena tasa de fotogramas, no son posibles actualmente utilizando Python. Hay que destacar que esto no puede ser un fallo achacable a Python, sino un simple caso de que la escalabilidad vertical del desarrollo de juegos no es uno de sus puntos fuertes.

Python para trabajar con sistemas a nivel de máquina

Es fácil ver, buscando en la web, lo mucho que le gusta Python a la comunidad de aficionados a la robótica, pero -atención- Python no es el mejor lenguaje para hacer estos trabajos. Cuando los sistemas son muchos, de bajo nivel y muy integrados, ya no vale la pena considerar Python.

Sistemas integrados: qué son y cómo funcionan (por ejemplo, Arduino)

A estas alturas debemos reconocer que la definición de lo que es un sistema “embebido” se ha vuelto borrosa en los últimos años, pero de todos modos hay una buena analogía que considerar. Un sistema “embebido” debería ser tan seguro como cuando se incorporan pequeñas placas de desarrollo de hardware a un proyecto como Arduino. Sin embargo, cuando tenemos que tener en cuenta dispositivos más grandes y complejos, como Raspberry Pi u ordenadores de placa única similares, no podemos seguir considerándolos exactamente “empotrados”: incorporados. Y el problema surge cuando la memoria y el tiempo son esenciales. Un chip de 8 bits en un componente de hardware integrado tiene que gestionar la memoria con mucho cuidado. Eso no es algo para lo que Python es realmente adecuado, y hay una razón por la que el lenguaje Arduino es una versión simplificada de C/C ++. Trabajar con una versión comprensible de un algoritmo escrito en C++ de Arduino es menos complejo de lo que crees.

El lenguaje de programación C es muy potente, pero es tan poderoso como peligroso. A pesar de ser de alto nivel, C y su superconjunto C ++ pueden acceder a procesos de bajo nivel y cambiar la configuración de la máquina hasta escribir en los registros de hardware de las EPROM (Erasable Programmable Read-Only Memory) de estas placas. Así que podemos decir que, en esencia, C fue la primera traducción del código de la máquina a algo que los humanos pudieran escribir, releer, corregir transmitir e intercambiar entre sus códigos fácilmente, con un buen nivel de comprensión y mantenimiento.

Además de la capacidad de manejar sistemas de bajo nivel, la adopción de C trae consigo una gran capacidad para aumentar la velocidad de ejecución. Como C es un lenguaje muy esquelético, no hay agravantes generales de manejo de funciones complejas ni acciones de limpieza de stack o memoria de página (garbage collection) que lo hagan más lento. Y de ahí viene la fama de C de ser “bonito y peligroso”, ya que las fugas de memoria que no son gestionadas por el código (no se recupera la memoria, de forma continua y automática) pueden causar graves problemas. Pero esto significa, por todo ello, que C brilla donde el tiempo y la velocidad son críticos.

Cualquiera que intente adentrarse en la programación de hardware o en cualquier forma de programación del núcleo/kernel debería considerar seriamente la posibilidad de adoptar C. Lo mismo ocurre con cualquiera que quiera crear controladores de dispositivos, conexiones de bajo nivel, máquinas en tiempo real, etc.

Por qué cambiar a Python como lenguaje de programación

Hagámonos una última pregunta obvia: conoces perfectamente otro potente lenguaje de programación, ¿por qué cambiar? Es probable que ya hayas realizado un curso de programación, o que hayas iniciado un curso de programación en línea sobre un determinado lenguaje, mantener un camino ya iniciado tiene ventajas: el aprendizaje de un primer lenguaje proporciona los fundamentos de la programación, y cambiar al aprendizaje de una sintaxis completamente nueva repercutirá en tu formación y ralentizará la curva de aprendizaje de esta herramienta hacia un modelo maduro de adopción.

Considera también que el acceso a la programación que otorga Python a la mayoría de los programadores de nivel superior no implica el aprendizaje de un lenguaje de bajo nivel o “diferente”. Debido a su naturaleza altamente legible y a su sintaxis intuitiva, a muchos les resulta más fácil aprender Python.

Aprender Python: habilidades, cursos y todo lo que necesitas

Hay tantas lenguajes que la elección puede ser difícil y estresante. Pero en este artículo nos hemos centrado básicamente en el hecho de que nunca habrá un lenguaje perfecto para todo, al igual que no hay una herramienta mecánica perfecta para todo: existe el destornillador, el martillo, la llave inglesa: y en cuanto a estas herramientas, concebir un objeto a base de cola y clavos es diferente de concebirlo con tablas y tornillos. Y en cuanto a estos artefactos, hacer un objeto de madera encontrará límites estructurales que sólo podrán superarse con nuevas estructuras de hierro y pernos.

Cómo utilizar Python para la Inteligencia Artificial

Últimamente, es innegable que Python se posiciona cada vez más como un lenguaje apropiado para aplicaciones que incluyen módulos de machine learning, necesarios para realizar los llamados sistemas de IA. De hecho, especialmente para el machine learning y el deep learning, Python ofrece, a pesar de ser un lenguaje de programación interpretado (lento), algunas buenas razones para utilizarlo:

  • Python puede acceder a muchas bibliotecas externas (módulos) con funciones útiles para la computación científica. Esto evita tener que desarrollarlos desde cero. Las bibliotecas externas de Python suelen desarrollarse con otros lenguajes compilados de alto nivel, como C y Fortran. Por lo tanto, son muy rápidos en su ejecución.
  • El lenguaje Python es similar al lenguaje natural (lengua inglesa).
  • Es mucho más fácil de usar que otros lenguajes de programación como C o Java.

Python y las bibliotecas básicas para el machine learning

Python es un lenguaje de programación de alto nivel y orientado a objetos, adecuado para, entre otros usos, desarrollar aplicaciones distribuidas, crear scripts, realizar cálculos numéricos y probar sistemas. Fue inventado por Guido van Rossum a principios de los años 90. El nombre fue elegido por la pasión de van Rossum por los Monty Python y su serie de televisión Monty Python’s Flying Circus. Python se compara a menudo con Ruby, Tcl, Perl, Java, JavaScript, Visual Basic o Scheme. Se trata de un lenguaje multiparadigma (es decir, admite la programación orientada a objetos, la estructurada y muchas características de la programación funcional y reflexiva) que tiene entre sus principales objetivos el dinamismo, la sencillez y la flexibilidad.

Las características más inmediatamente reconocibles de Python son las variables no tipadas y el uso de la sangría para definir las especificaciones. Otros rasgos distintivos son la sobrecarga de operadores y funciones a través de la delegación, la presencia de un rico surtido de tipos y funciones básicas y bibliotecas estándar, y sintaxis avanzadas como el slicing (troceado) y la comprensión de listas.

La comprobación de tipos es fuerte (strong typing) y se realiza en tiempo de ejecución (dynamic typing): una variable es un contenedor con una etiqueta (el nombre) que puede asociarse a varios contenedores, incluso de diferentes tipos, durante su tiempo de vida. Utiliza un ‘garbage collector’ para la liberación automática de memoria.

Tiene algunas similitudes con Perl, pero sus diseñadores han elegido una sintaxis más esencial y uniforme con el objetivo de aumentar la legibilidad del código. Al igual que Perl, se suele clasificar como un lenguaje de scripting, pero aunque es útil para escribir scripts de sistema, como alternativa a Bash por ejemplo, el gran número de librerías disponibles y la facilidad con la que el lenguaje permite escribir software modular también favorecen el desarrollo de aplicaciones muy complejas.

Aunque Python se considera generalmente un lenguaje interpretado, el código fuente no se convierte directamente en lenguaje de máquina. Primero pasa por una fase de precompilación en bytecode, que casi siempre se reutiliza tras la primera ejecución del programa, lo que evita tener que reinterpretar el código fuente cada vez y aumenta el rendimiento. Además, es posible distribuir programas Python directamente en bytecode, saltándose la fase de interpretación por parte del usuario final y obteniendo programas Python de código cerrado.

Al igual que Lisp y a diferencia de Perl, el intérprete de Python también admite un modo de uso interactivo (Repl) mediante el cual se puede introducir código directamente desde un terminal y ver inmediatamente el resultado. Además, el intérprete está contenido en la biblioteca estándar y, como en muchos otros lenguajes interpretados, es posible hacer que se evalúen cadenas arbitrarias en el contexto actual. También es posible pasar un contexto completamente diferente al intérprete en forma de listas que contienen la lista de símbolos definidos. Python también tiene un marco de pruebas unitarias que soporta el desarrollo de pruebas unitarias automatizadas.

Esto también es posible gracias al amplio conjunto de bibliotecas que posee, es decir, conjuntos de rutinas y funciones escritas que realizan una determinada tarea y que puede llamar cuando lo necesite. Las bibliotecas se confunden a menudo con los términos frameworks y packages. Antes de ver cuáles son los más populares para el machine learning, vamos a distinguir los términos teniendo en cuenta lo que se indica en la documentación del sitio web de Python.

Bibliotecas estándar y no estándar para Python

Python cuenta con una amplia biblioteca estándar, lo que lo hace adecuado para muchos usos. Además de los módulos de la biblioteca estándar, puede añadir otros escritos en C o Python para satisfacer sus necesidades particulares. Entre los módulos ya disponibles se encuentran los destinados a la escritura de aplicaciones web: soporta Mime, Http y todos los demás estándares de Internet. También hay módulos para crear aplicaciones con una interfaz gráfica, para conectar con bases de datos relacionales, para utilizar expresiones regulares. La biblioteca estándar es uno de los puntos fuertes de Python. De hecho, es compatible con todas las plataformas, salvo algunas funciones que están claramente marcadas en la documentación como específicas de una plataforma concreta. La biblioteca puede verse como una colección de módulos en la que cada uno de ellos contiene instrucciones y definiciones sencillas. La amalgama de varios módulos, y por tanto de código de instrucciones, constituye una biblioteca. A menudo los módulos ya han sido escritos por otros desarrolladores, y no es necesario empezar de nuevo cada vez. Su propósito es simplificar las tareas, ayudando a los desarrolladores a escribir sólo unas pocas líneas en lugar de una gran cantidad de comandos. El código de la biblioteca demanda clases y métodos que normalmente definen operaciones específicas en un área de dominio. Por ejemplo, hay algunas bibliotecas matemáticas que pueden hacer que el desarrollador simplemente llame a la función sin repetir la implementación de cómo funciona un algoritmo.

Paquetes de Python

Para entender lo que son los paquetes puedes imaginar la estructura de directorios donde se almacenan los archivos en el disco de tu ordenador. No solemos almacenar todos nuestros archivos en el mismo lugar. Utilizamos una jerarquía de directorios bien organizada para facilitar el acceso. Los archivos similares se guardan en el mismo directorio; por ejemplo, podemos almacenar toda nuestra música en el directorio “music”. De forma similar, Python tiene paquetes para los directorios y módulos para los archivos. Dado que un directorio puede contener subdirectorios y archivos, del mismo modo, un paquete de Python puede tener subpaquetes y módulos. Para que Python considere un directorio como un paquete, debe contener un archivo llamado __init__.py . Este archivo puede dejarse vacío, pero generalmente el código de inicialización para ese paquete se coloca en este archivo.

El Framework de Python

A diferencia de las bibliotecas, un framework se define como “una abstracción, en la que el software que proporciona funcionalidad genérica puede ser modificado selectivamente por código adicional escrito por el usuario, proporcionando así un software específico para la aplicación”. Se puede considerar un framework como una herramienta de software que proporciona una forma de crear y ejecutar aplicaciones web, y a menudo hace uso de bibliotecas y paquetes para hacerlo. Al utilizar un marco de trabajo web, no tienes que escribir el código por tu cuenta y perder el tiempo buscando posibles errores de cálculo y bugs. En los primeros tiempos del desarrollo web, todas las aplicaciones se codificaban a mano y sólo el desarrollador de una determinada aplicación podía modificarla o desplegarla. Los frameworks web introdujeron una forma fácil de salir de esta trampa. Desde 1995, todas las molestias asociadas al cambio de estructura de una aplicación se han puesto en orden gracias a la aparición del rendimiento general, que coincidió con el momento en que aparecieron los lenguajes específicos de la web. Su variedad ahora funciona bien tanto para páginas web estáticas como dinámicas. Podemos tener dos tipos de marcos web:

  • Del lado del servidor (server-side): también llamados frameworks de back-end, son aplicaciones de software que facilitan la escritura, el mantenimiento y la escalabilidad de las aplicaciones web. Proporcionan herramientas y bibliotecas que simplifican las tareas habituales de desarrollo web, como el enrutamiento de las URL a los gestores adecuados, la interacción con las bases de datos, el apoyo a las sesiones y la autorización de los usuarios, el formateo de la salida (por ejemplo, Html, Json, Xml) y la mejora de la seguridad frente a los ataques web.
  • Del lado del cliente: también llamado frontend framework, consiste en un paquete formado por una estructura de archivos y carpetas de código estándar (documentos Html, Css, JS, etc.). Se ocupa principalmente de las partes exteriores de un sitio o aplicación web. En resumen, lo que un usuario ve cuando abre la aplicación.

Hay una tercera situación (llamada Full-stack Framework) que es la combinación de los extremos frontend y backend. Un desarrollador full-stack es un todoterreno. Son responsables de todos los niveles de desarrollo, desde cómo se configura el servidor hasta el CSS relacionado con el diseño. Hay que decir que es complejo gestionar ambas partes. Si también quieres conocer la lista de frameworks web escritos en lenguaje Phyton puedes ver el siguiente enlace (uno de los más populares es Django).

Las bibliotecas más populares en el machine learning

Veamos ahora cuáles son las bibliotecas de Python más importantes utilizadas en el machine learning.

Scikit-learn

scikit-learnEs una biblioteca de machine learning de código abierto para el lenguaje de programación Python. Contiene algoritmos de clasificación, regresión y clustering (agrupación) y máquinas de vectores de soporte, regresión logística, clasificador bayesiano, k-mean y DBSCAN, y está diseñado para trabajar con las librerías NumPy y SciPy. Actualmente, Scikit-learn está patrocinado por Inria y, en ocasiones, por Google.

Pandas

pandasEs una biblioteca de software escrita para el lenguaje de programación Python para la manipulación y el análisis de datos. En particular, proporciona estructuras de datos y operaciones para manipular tablas numéricas y series temporales. Es un software libre liberado bajo la licencia BSD de tres cláusulas. El nombre deriva de “datos de panel”, un término econométrico para los conjuntos de datos que incluyen observaciones a lo largo de múltiples períodos de tiempo para los mismos individuos. Pandas es una librería muy popular para recuperar y preparar datos para su futuro uso en otras librerías de ML como Scikit-learn o Tensorflow. También permite recuperar fácilmente datos de diferentes fuentes: bases de datos Sql, texto, Csv, Excel, archivos Json y muchos otros formatos menos populares. Una vez que los datos están en la memoria, hay docenas de operaciones diferentes para analizar, transformar, recuperar valores perdidos, limpiar el conjunto de datos, así como operaciones tipo SQL y un conjunto de funciones estadísticas para realizar incluso un análisis sencillo.

NumPy

numpySe trata de una biblioteca de código abierto para el lenguaje de programación Python, que añade soporte para matrices de gran tamaño y matrices multidimensionales junto con una gran colección de funciones matemáticas de alto nivel para operar eficazmente con estas estructuras de datos. Fue creado en 2005 por Travis Oliphant basándose en Numeric de Jim Hugunin, significa Numeric Python y es el paquete fundamental para la computación científica con Python. NumPy es, obviamente, una de las mayores bibliotecas de cálculo matemático y científico para Python. Una de las características más importantes de NumPy es su interfaz Array. Esta interfaz puede utilizarse para expresar imágenes, ondas sonoras u otros flujos binarios en bruto como matrices de números reales con dimensión N. El conocimiento de NumPy es muy importante para el machine learning y la ciencia de datos.

Matplotlib

matplotibEs una biblioteca de gráficos para el lenguaje de programación Python y la biblioteca matemática NumPy. Proporciona API orientadas a objetos que permiten colocar los gráficos dentro de las aplicaciones que utilizan kits de herramientas GUI enéricas, como WxPython, Qt o GTK. También existe una interfaz procedimental “pylab” basada en una máquina de estados (como OpenGL) diseñada para parecerse a Matlab. Al principio la biblioteca fue hecha principalmente por John Hunter y distribuida bajo una licencia Bsd.

El mejor y más sofisticado machine learning no tiene sentido si no se puede comunicar a otras personas. Entonces, ¿cómo se transforma realmente el valor de todos estos datos que se tienen? Aquí es donde Matplotlib viene al rescate. Es una biblioteca estándar de Python utilizada para crear diagramas y gráficos en 3D. Es de muy bajo nivel, lo que significa que requiere más comandos para generar bonitos gráficos y cifras que algunas bibliotecas avanzadas. Sin embargo, la otra cara de la moneda es la flexibilidad. Con suficientes comandos, puedes crear prácticamente cualquier tipo de gráfico que quieras con Matplotlib. Puede crear una gran variedad de gráficos, desde histogramas y gráficos de dispersión hasta gráficos con coordenadas no cartesianas.

Theano

theanoEs una biblioteca de cálculo numérico de código abierto para el lenguaje de programación Python desarrollada por un grupo de machine learning de la Universidad de Montreal. En Theano los cálculos se expresan utilizando una sintaxis similar a la de NumPy y se compilan para que se ejecuten de forma eficiente tanto en arquitecturas Cpu como Gpu. Representa una biblioteca de Python que permite evaluar, optimizar y definir expresiones matemáticas que involucran matrices multidimensionales de manera eficiente (es similar a NumPy). Esta biblioteca optimiza la utilización de la Cpu y la Gpu y mejora el rendimiento del cálculo intensivo de datos, ya que el código de Theano está escrito de tal manera que se aprovecha de cómo funciona un compilador de la computadora. Es una de las librerías de Deep learning más utilizadas hasta la fecha, aunque la última versión fue lanzada en 2017.

TensorFlow

tensor-flowEs una biblioteca de software de código abierto para el machine learning, que proporciona módulos probados y optimizados, útiles en la realización de algoritmos para diferentes tipos de tareas de percepción y comprensión del lenguaje. Se trata de una segunda generación de API, utilizada por unos cincuenta equipos tanto en investigación científica como en entornos de producción; es la base de docenas de productos comerciales de Google, como el reconocimiento de voz, Gmail, Google Photos y Search. Estos equipos han utilizado previamente DistBelief, la primera generación de API. TensorFlow fue desarrollado por el equipo de Google Brain y puesto a disposición del público el 9 de noviembre de 2015, bajo los términos de la licencia de código abierto Apache 2.0. Según varios estudios, Tensorflow es una de las librerías más utilizadas por quienes se adentran en el mundo del deep learning. Esa biblioteca fue desarrollada por Google, y casi todas sus aplicaciones utilizan Tensorflow para el machine learning. Si utilizas las fotos de Google o la búsqueda por voz de Google, indirectamente estás utilizando modelos creados con Tensorflow. Tensorflow no es más que un marco computacional para expresar algoritmos que implican un gran número de operaciones tensoriales, ya que las redes neuronales pueden expresarse como grafos computacionales a través de una serie de operaciones sobre tensores. Los tensores son matrices de N dimensiones que representan nuestros datos.

Pytorch

pytorchEs. una biblioteca de machine learning de código abierto basada en Torch, utilizada para aplicaciones como las de visión por ordenador y procesamiento del lenguaje natural. Fue desarrollado principalmente por los laboratorios de investigación de IA de Facebook (FAIR Facebook AI Research lab).

También es un software libre y de código abierto liberado bajo licencia Bsd. Aunque la interfaz de Python es más elegante y tiene el enfoque principal de desarrollo, PyTorch también tiene una interfaz C++.

Una cantidad significativa de piezas de software dedicadas al deep learning han sido desarrolladas en PyTorch, incluyendo Pyro de Uber, Transformers de HuggingFace y Catalyst.

PyTorch ofrece dos características clave de alto nivel:

  • Procesamiento tensorial, (exactamente como NumPy) con fuerte aceleración en Gpu (unidades de procesamiento gráfico)
  • Redes neuronales profundas basadas en un sistema de álgebra autodiferenciada embebido

La biblioteca se centra en ofrecer a los usuarios una experiencia de modelado rápida y flexible y ha ganado mucha tracción en la comunidad de Deep Learning. En comparación con Tensorflow, es más fácil de aprender y utilizar. El inconveniente es que PyTorch está menos maduro que Tensorflow, pero la comunidad está creciendo rápidamente y ya hay muchos materiales de formación y tutoriales.

Keras

kerasEs una biblioteca de código abierto para el machine learning y las redes neuronales, escrita en Python. Está diseñada como una interfaz a un nivel de abstracción más alto que otras bibliotecas similares de nivel inferior, y es compatible con las bibliotecas TensorFlow, Microsoft Cognitive Toolkit (CNTK) y Theano como back-end. Diseñado para permitir la creación rápida de prototipos de redes neuronales profundas, se centra en la facilidad de uso, la modularidad y la extensibilidad. Se ha desarrollado en el marco del proyecto de investigación Oneiros, y su autor principal es François Chollet, de Google.

En 2017, el equipo de TensorFlow decidió dar soporte oficial a Keras. Chollet explicó que Keras se diseñó como una interfaz y no como una biblioteca independiente. Ofrece un conjunto de módulos que permiten desarrollar redes neuronales profundas independientemente del back-end que se utilice, con un lenguaje común e intuitivo. Microsoft añadió un back-end a Cntk a partir de la versión 2.0 de Cntk.

Es una de las librerías de machine learning más interesantes y los expertos recomiendan empezar con esta librería, para aquellos que empiezan a estudiar el machine learning, ya que proporciona una forma más fácil de expresar algunas configuraciones estándar de las redes neuronales. También proporciona algunas utilidades para procesar conjuntos de datos, compilar modelos, evaluar resultados, visualizar gráficos, etc. Las ventajas actuales de Keras, a diferencia de PyTorch, son que es más maduro, tiene una comunidad más grande y muchos tutoriales listos para usar. Además, puede utilizar Tensorflow. Por otro lado, PyTorch proporciona algunas características muy interesantes (como la depuración interactiva o la definición dinámica de gráficos) y está creciendo rápidamente.

Conclusiones sobre el uso de Python para escribir código informático

Aprender un lenguaje de forma completa y profunda es sin duda un buen ejercicio, pero para estudiar los efectos de aplicación de los algoritmos y configuraciones de la inteligencia artificial, debemos partir de los algoritmos clásicos de machine learning y centrarnos más en su especificidad. Sólo después de haber obtenido una buena comprensión de los distintos métodos de desarrollo de comportamientos inteligentes artificiales, a través del estudio de las redes neuronales y sus múltiples configuraciones y usos, podemos entonces intentar recurrir a librerías preconfiguradas como Tensorflow, PyTorch o Keras y entrar en el mundo del Deep Learning.

@RESERVADOS TODOS LOS DERECHOS
I
Paolo Maria Innocenzi
Cyberscurity Specialist

Cybersecurity Specialist

Temas principales

Especificaciones

P
programacion
P
python
V
videojuegos

Nota 1 de 2