PyTorch
# PyTorch

PyTorch es una biblioteca de aprendizaje automático de código abierto basada en la biblioteca de Torch, utilizado para aplicaciones como visión artificial y procesamiento de lenguajes naturales, principalmente desarrollado por el Laboratorio de Investigación de Inteligencia Artificial de Facebook (FAIR). Es un software libre y de código abierto liberado bajo la Licencia Modificada de BSD. A pesar de que la interfaz de Python está más pulida y es el foco principal del desarrollo, PyTorch también tiene una interfaz en C++.

Un número de las piezas de software de Aprendizaje Profundo están construidas utilizando PyTorch, incluyendo Tesla Autopilot, Uber's Pyro, HuggingFace's Transformers, PyTorch Lighting, y Catalyst.

PyTorch proporciona dos características de alto nivel:

* Computación de tensores (como NumPy ) con una aceleración fuerte a través de unidades de procesamientos gráficos (GPU).
* Redes neuronales profundas construidas en un sistema de diferenciación automática de bases de datos.

## Historia

Facebook operó PyTorch y Convolutional Architecture for Fast Feature Embedding (Caffe2), pero los modelos definidos para los dos entornos de trabajo o Frameworks eran incompatibles. El proyecto Open Neural Network Exchange (ONNX) fue creado por Facebook y Microsoft en septiembre de 2017 para convertir modelos entre frameworks. Caffe2 se fusionó con PyTorch a finales de marzo de 2018.

## Módulos

### Autograd module

PyTorch utiliza un método llamado diferenciación automática. Unos registrador registra lo que las operaciones que se han hecho, y luego las reproduce hacia atrás para calcular los gradientes. Este método es especialmente potente cuando se están construyendo redes neuronales para ahorrar tiempo en una época en la que calcular la diferenciación de los parámetros es un paso adelante.

### Optim module

torch.optim es un módulo que implementa varios algoritmos de optimización que se utilizan para construir redes neuronales. La mayoría de los métodos comúnmente usados ya son compatibles, por lo que no hay ninguna necesidad de crearlos desde cero.

### nn module

PyTorch Autograd hace que sea fácil definir gráficos computacionales y coger distintos grados, pero Raw Autograd puede ser un nivel demasiado bajo para definir redes neuronales complejas. Por esto es por lo que se creó el módulo nn, para ayudar a crear redes neuronales más complejas.

