Tag: Python

El pasado mes de agosto, el instituto IEEE (Institute of Electrical and Electronics Engineers) publicaba en Spectrum, el ranking anual sobre el Top Programming Languages 2021, donde se destacaba Python como el lenguaje de programación más popular en 2021. Según este estudio, Python se convierte en la plataforma «de facto» para las nuevas tecnología IT y la principal conclusión que se puede sacar de su constante predominio es que hay que aprender Python:

Learning the language well enough to use one of the vast number of libraries written for it is probably worth your time.

Aprender este lenguaje lo bastante bien como para poder usar una de las muchas bibliotecas escritas para él probablemente valga la pena

Python es una opción interesante para realizar todo tipo de programas que se ejecuten en cualquier máquina. Con este lenguaje podemos desarrollar software para app científicas, para comunicaciones de red, para app de escritorio con interfaz gráfica de usuario (GUI), para crear videojuegos, para smartphones, para Inteligencia Artificial, para automatización de tareas y por supuesto, para programación web. Su predominio que tiene mucho que ver con su versatilidad: lenguaje multiparadigma, al poder ser enfocado a varios estilos; y de código abierto, lo que permite que cualquiera pueda acceder a él. Actualmente, Python es el lenguaje de programación de referencia para grandes tecnológico como Google, Facebook o Netflix lo utilizan.

Por otro lado, cabe decir que muchas tareas siguen demandando soluciones especializadas como R, SQL y Matlab.  Así como, otros lenguajes generalistas también siguen siendo de peso en proyectos IT como son los que aparecen, junto a Python, en el top 5 del ranking:  Java, C, C++ y JavaScript.

ranking IEEE

FUENTE: https://spectrum.ieee.org/

Acerca del ranking…

La publicación Spectrum sobre  «Top Programming Languages 2021» tiene el objetivo de clasificar  docenas de lenguajes de programación en base a su popularidad. Se trata de un ranking interactivo: se puede filtrar excluyendo sectores que no sean relevantes para quien lo quiera visualizar (ej. filtar como «Web» o «Integrado»).  Las clasificaciones se crean ponderando y combinando 11 métricas de ocho fuentes: CareerBuilder, GitHub, Google, Hacker News, IEEE, Reddit, Stack Overflow y Twitter. El ranking, por defecto, posee unos filtros asociados preestablecidos por IEEE, pero si el usuario desea realizar su propio ranking, la publicación Spectrum ofrece la posibilidad de customizar los criterios de clasificación a través del botón «Create Custom Ranking», como se muestra en la siguiente imagen:

IEEE Spectrum filters

FUENTE: https://spectrum.ieee.org/

Este ránking de IEEE puede resultar un tanto polémico ya que se incluyen algunos «lenguajes» a los que no todos considerarían lenguajes de programación como tal, ejemplos de esto son: el puesto 9, HTML; y el puesto 11, Arduino. Según afirma su autor, , «adoptamos un enfoque pragmático para definir qué es un lenguaje de programación; HTML no puede ser de propósito general, pero creemos que sería una locura excluirlo sobre esa base. De la misma forma que se podría argumentar que el código Arduino simplemente está escrito en un subconjunto de C ++, pero eso no es lo que la gente busca cuando intentan que sus LEDs parpadeen«.

  • Un año más, durante el próximo curso académico 2020/2021 ITELLIGENT será la empresa colaboradora que participe en la IV Edición del Curso «Python: Machine Learning, Optimización y Aplicaciones» de la Universidad de Sevilla.
  • El plazo de prescripción termina el 20 de septiembre de 2020.

Si eres graduado o alumno de Máster y/o Doctorado y quieres seguir formándote, te invitamos a que prestes atención a las oportunidades que te puede brindar este Curso de Formación Permanente del Vicerrectorado de Ordenación Académica de la Universidad de Sevilla. También, pueden inscribirse cualquier persona interesada con conocimientos previos de programación ni tampoco es necesario en Python.

ITELLIGENT, como empresa colaboradora, participa activamente con la impartición de algunas sesiones formativas a lo largo del curso. Los encargados de ello son: Jaime Martel, CTO de ITELLIGENT y Mario Rivas, Ingeniero de I+D+i. Entre el resto de profesorado se encuentran docentes de la Universidad de Sevilla especialistas en diversos disciplinas: Ingeniería Electrónica, Geografía Física y Análisis Geográfico Regional y Administración de Empresas y Marketing. Por último, cabe destacar la figura de Sergio Luis Toral (Departamento Ingeniería Electrónica) como Director de los estudios a quien los interesados en el curso pueden dirigirse a través del mail y teléfono de la siguiente imagen.

Python iv edicion

Los principales objetivos del curso son:

  1. Proporcionar una introducción al lenguaje de programación Python y a sus principales módulos (Numpy, Scipy y Matplotlib)
  2. Introducir desde un perspectiva teórico-práctica técnicas de machine learning de regresión, clasificación y clustering, utilizando el módulo scikit-learn en Python
  3. Introducir desde un perspectiva teórico-práctica técnicas de optimización metaheurísticas basadas en trayectoria y en población, utilizando el módulo DEAP en Python
  4. Introducir desde un perspectiva teórico-práctica técnicas de deep learning, incluyendo las Fully Connected Networks, Convolutional Neural etworks (CNNs) y Recurrent Neural Networks (RNNs)
  5. Aplicaciones comerciales

Para más información visita la web del curso o descárgate este folleto.

PyTorch es un framework de Machine Learning de código abierto creado para ser flexible y modular para la investigación, con la estabilidad y el soporte necesarios para el despliegue de producción. PyTorch proporciona un paquete de Python para funciones de alto nivel como el cálculo de tensor (como NumPy) con una fuerte aceleración de GPU y TorchScript para una transición fácil entre el modo «eager» y el modo gráfico. Con la última versión de PyTorch, el framework proporciona ejecución basada en gráficos, capacitación distribuida, implementación móvil y cuantización. La sencillez de su interfaz, y su capacidad para ejecutarse en GPUs (lo que acelera el entrenamiento de los modelos), lo convierten en la opción más asequible para crear redes neuronales artificiales.

Originalmente desarrollado por Facebook AI Research, PyTorch ha sido a su vez una pieza fundamental en el desarrollo de relevantes aplicaciones de Inteligencia Artificial, como el Autopilot de Tesla y el Pyro de Uber. Gracias a su facilidad de uso, PyTorch se ha convertido en uno de los frameworks de Deep Learning más populares del mundo, al que sólo hacen sombra Tensorflow y Keras, ambos respaldados por el patrocinio de Google. En este artículo (en inglés), puedes descubrir las diferencias entre PyTorch y TensorFlow.

¿Por qué PyTorch es el framework de Deep Learning del futuro?

A continuación, te exponemos las diez razones por las que PyTorch es uno de los framework de aprendizaje profucndo más populares a nivel mundial:

1. Python es uno de los lenguajes de programación más populares utilizados por los científicos de datos, para construir modelos de Machine Learning. PyTorch está diseñado para integrarse perfectamente con Python y sus bibliotecas populares como NumPy.

2. Fácil de aprender. PyTorch es más fácil de aprender que otros frameworks de Deep Learning. Esto se debe a que su sintaxis y aplicación son similares a muchos lenguajes de programación convencionales como Python.La documentación de PyTorch también es muy organizada y útil para principiantes. Más adelante os mostraremos recursos para aprender PyTorch.

3. Mayor productividad del desarrollador. PyTorch es muy simple de usar, lo que también significa que la curva de aprendizaje para los desarrolladores es relativamente corta. PyTorch tiene una interfaz Python simple y proporciona una API simple pero potente. PyTorch también se puede implementar fácilmente en Windows y Linux.

4. Debugging (depuración) fácil. Como PyTorch está profundamente integrado con Python, muchas herramientas de depuración de Python también se pueden usar en el código PyTorch. Específicamente, las herramientas pdb e ipdb de Python se pueden usar para este tipo de depuración en PyTorch.

5. Data Parallelism. PyTorch tiene una característica muy útil conocida como paralelismo de datos. Con esta función, PyTorch puede distribuir el trabajo computacional entre múltiples núcleos de CPU o GPU

6. Support de gráfico dinámico. PyTorch admite gráficos computacionales dinámicos, lo que significa que el comportamiento de la red se puede cambiar mediante programación en tiempo de ejecución. Esto facilita una optimización de modelo más eficiente y le da a PyTorch una gran ventaja sobre otros frameworks de aprendizaje automático, que tratan las redes neuronales como objetos estáticos. Con este enfoque dinámico, podemos ver todos y cada uno de los cálculos y saber exactamente lo que está sucediendo. Cuando el flujo de datos y las operaciones correspondientes se definen en tiempo de ejecución, la construcción del gráfico computacional ocurre dinámicamente. Esto se hace con la ayuda de la clase de autogrado implícitamente.

7. PyTorch también proporciona un nuevo front-end híbrido. Esto significa que tenemos dos modos de operación, a saber, el modo «eager» y el modo gráfico. Generalmente utilizamos el modo «eager» para la investigación y el desarrollo, ya que este modo proporciona flexibilidad y facilidad de uso. Y generalmente utilizamos el modo gráfico para la producción, ya que esto proporciona una mejor velocidad, optimización y funcionalidad en un entorno de tiempo de ejecución C ++.

8. Bibliotecas útiles. Una gran comunidad de desarrolladores ha creado muchas herramientas y bibliotecas para extender PyTorch. La comunidad también está apoyando el desarrollo en visión por computadora, aprendizaje de refuerzo y mucho más.

9. PyTorch tiene soporte nativo de ONNX y puede exportar modelos en el formato estándar de intercambio de red neuronal abierta. Esto permitirá que los modelos basados ​​en PyTorch accedan directamente a las plataformas y tiempos de ejecución compatibles con ONNX.

10. PyTorch también es bien recibido por las principales plataformas en la nube, lo que permite a los desarrolladores e ingenieros realizar trabajos de capacitación a gran escala en GPU con PyTorch. El soporte en la nube de PyTorch también proporciona la capacidad de ejecutar modelos en un entorno de producción.

learning pytorch

Recursos para aprender PyTorch

Gracias a Internet, podemos acceder a un gran numero de recursos gratuitos para aprender PyTorch. La propia web de PyTorch ofrece una serie de herramientas -en inglés- como son:

  • La guía de referencia de la API: https://pytorch.org/docs/stable/index.html
  • Videotutoriales de 60 minutos: https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html
  • Tutoriales: https://pytorch.org/tutorials/
  • Recetas de ejemplos de códigos: https://pytorch.org/tutorials/recipes/recipes_index.html
  • Manual: Deep Learning with PyTorch

Sin embargo si necesitas mejor videotutoriales en español, existe el canal de YouTube Not CSV el cual posee una interesante introducción a PyTorch dividida en dos vídeos de una hora cada uno.

Por otro lado, existen otros recursos formativos muy útiles fuera de la web de PyTorch como: