Underc0de

Programación Scripting => Python => Mensaje iniciado por: ANTRAX en Agosto 11, 2019, 05:16:23 PM

Título: Pytorch – Redes Neuronales en Python
Publicado por: ANTRAX en Agosto 11, 2019, 05:16:23 PM
(https://antrax-labs.org/wp-content/uploads/2019/07/1-1-750x350.jpg)

Últimamente hay un gran revuelo por la inteligencia artificial y redes neuronales, Pytorch es una librería de Python que permite hacer cálculos numéricos haciendo uso de la programación de tensores. No solo esto, sino que permite utilizar la GPU para acelerar aún más los cálculos.

Pytorch está ganando mucho terreno en esta área, porque es muy sencillo de utilizar, además a pesar de ser una librería reciente, hay mucha documentación con ejemplos para usarla. Otra curiosidad a tener en cuenta, es que posee una comunidad que esta creciendo muchísimo, en donde cada vez más programadores comparten sus códigos y experiencias. Por último, cabe destacar que es la librería principal que utiliza Facebook para aplicaciones de Deep Learning.

Pytorch se basa en el uso de tensores, que pueden ser equipados con vectores de una o muchas dimensiones.

Para entender un poco mejor el concepto de red neuronal, podemos decir que es un sistema de nodos interconectados de forma ordenado, distribuido por capas. A través de estas capas es posible captar una señal de entrada y emitir una salida. Se conoce como red neuronal, ya que es básicamente una emulación a la red biológica del reino animal. Estas capas pueden ser "entrenadas" para que aprendan.

Primeros pasos con Pytorch

Para instalar Pytorch, entramos a su web oficial:  https://pytorch.org y en la parte de Quick Start, veremos algo como lo siguiente:

(https://antrax-labs.org/wp-content/uploads/2019/07/550x347_807.png)

Automáticamente identifica nuestro sistema operativo, packages, versión de Python, y CUDA es por si disponemos de alguna tarjeta gráfica. En mi caso detectó la versión 9.0. En caso de no tener, simplemente seleccionamos NONE.

Por último, nos genera el comando que debemos correr desde nuestra consola, en mi caso:

Código (python) [Seleccionar]
pip3 install https://download.pytorch.org/whl/cu90/torch-1.1.0-cp37-cp37m-win_amd64.whl
pip3 install https://download.pytorch.org/whl/cu90/torchvision-0.3.0-cp37-cp37m-win_amd64.whl


Una vez instalado, podemos importarlo en nuestro proyecto de la siguiente manera

import torch

Con esto ya podemos comenzar a utilizar esta potente librería. A continuación, veremos como verificar si tenemos disponible CUDA para procesar datos utilizando la GPU, lo que logrará que las ejecuciones sean más veloces.

En una consola, importamos torch y luego tipeamos: torch.cuda.is_available()

(https://antrax-labs.org/wp-content/uploads/2019/07/550x347_807-1.png)

En caso de estar disponible, nos responderá con un True.
Ahora veamos un ejemplo de como cargarle datos a un tensor, y luego como sumar tensores utilizando la GPU.
Comenzaremos creando un tensor de la siguiente forma: import torch

Código (python) [Seleccionar]
import torch
x = torch.Tensor(5,4)
print (x)


Al correr el script, tendremos un resultado como este:

(https://antrax-labs.org/wp-content/uploads/2019/07/550x347_807-2.png)

Ahora crearemos 2 tensores y los sumaremos.

Código (python) [Seleccionar]
import torch
x = torch.Tensor(5,4)
y = torch.Tensor(5,4)
z = x+y
print (z)


(https://antrax-labs.org/wp-content/uploads/2019/07/550x347_807-3.png)

Finalmente haremos esta misma suma, pero utilizando la GPU, para ello colocamos lo siguiente:

Código (python) [Seleccionar]
import torch
x = torch.Tensor(5,4)
y = torch.Tensor(5,4)
x = x.cuda()
y = y.cuda()
z = x+y
print (z)


(https://antrax-labs.org/wp-content/uploads/2019/07/550x347_807-4.png)

Básicamente lo que hacemos es pasar nuestras variables que estaban en la CPU a la GPU y luego podemos sumarla con normalidad.

Se puede hacer una infinidad de cosas interesantes con esta potente librería de Python, la limitación la pone la imaginación de cada uno.

Saludos,
ANTRAX
Título: Re:Pytorch – Redes Neuronales en Python
Publicado por: Moy en Agosto 11, 2019, 05:41:48 PM
excelente ANTRAX justo ando en un curso de machine learning con tensorflow y keras

le voy a hechar un ojo a Pytorch se ve que simplifica bastante el uso de tensores


un saludo
Título: Re:Pytorch – Redes Neuronales en Python
Publicado por: ANTRAX en Agosto 11, 2019, 05:43:13 PM
Muchas gracias por leer mi post @Moy (https://underc0de.org/foro/index.php?action=profile;u=12229)

Hice unas pocas pruebas y la verdad es que es muy potente, sobre todo si tienes placa de video para usarle la GPU!

Saludos,
ANTRAX
Título: Re:Pytorch – Redes Neuronales en Python
Publicado por: DtxdF en Agosto 12, 2019, 09:25:26 PM
Gracias @ANTRAX (https://underc0de.org/foro/index.php?action=profile;u=1). Justo hoy comencé a aprender sobre estos temas y son de verdad espectaculares.