Red-Neuronal-Convolucional. (CNN)

Neuronal-Networking

Nota: (Las Redes-Neuronales-Convolucionales CNN es un algoritmo de Deep-Learning que está diseñado para trabajar con imágenes, tomando estas como input, asignándole Pesos a ciertos elementos en la imagen para así poder diferenciar unos de otros. Este es el secreto de la Visión por computadora).

 

Red-Neuronal-Convolucional. (CNN)

-. Las RedesConvolucionales (CNN) contienen varias Capas-Ocultas, donde las primera puedan detectar líneas, la segunda curvas y así se van especializando hasta poder reconocer formas complejas.

-. El kernel en las RedesConvolucionales (CNN) se considera como el filtro que se aplica a una imagen para extraer ciertas características importantes o patrones de esta, el kernel detectar bordes, enfoque, desenfoque, etc. Esto se logra al realizar la Convolución entre la imagen y el kernel.

-. Las RedesConvolucionales (CNN) el procesos más importante. El cual consiste en tomar un grupo de píxeles de la imagen de entrada e ir realizando un producto escalar con un kernel. El kernel recorrerá todas las neuronas de entrada y obtendremos una nueva matriz, la cual será una de las Capas-Ocultas.

-. Este proceso tenemos una imagen y el kernel, con la finalidad que el filtro o kernel recortar toda la imagen. La Convolución permite multiplicar el kernel con la porción de imagen escogida, y luego el kernel se va desplazando es un proceso iterativo.

-. Las Redes-Neuronales-Convolucionales trabajan modelando de forma consecutiva pequeñas piezas de información, y luego combinando esta información en las capas más profundas de la red.

-. La diferencia de Redes-Neuronales-Convolucionales CNN y cualquier otra Red-Neuronal es que Redes-Neuronales-Convolucionales, ejecuta la entrada como una matriz bidimensional y opera directamente en las imágenes en lugar de centrarse en la extracción de características en la que se centran otras redes neuronales.

 

Implementación de una CNN con PyTorch

Nota: Importamos los modulo toch.autograd y toch.nn del Frameworks-Pytorch

  • from torch.autograd import Variable
  • import torch.nn.functional as F

Nota: Generamos una clase con representación por lotes de la Red-Neuronal-Convolucional, la entrada x tiene una dimensión de (3, 32, 32).

  • class SimpleCNN(torch.nn.Module):
  •   def __init__(self):
  •     super(SimpleCNN, self).__init__()
  •     #Canales de entrada = 3, canales de salida = 18
  •     self.conv1 = torch.nn.Conv2d(3, 18, kernel_size = 3, stride = 1, padding = 1)
  •     self.pool = torch.nn.MaxPool2d(kernel_size = 2, stride = 2, padding = 0)
  •     #4608 funciones de entrada, 64 funciones de salida
  •     self.fc1 = torch.nn.Linear(18 * 16 * 16, 64)
  •     #64 funciones de entrada, 10 funciones de salida para nuestras 10 clases definidas
  •     self.fc2 = torch.nn.Linear(64, 10)

Nota: Calcule la activación de los primeros cambios de tamaño de convolución de (3, 32, 32) a (18, 32, 32).

  • def forward(self, x):
  •   x = F.relu(self.conv1(x))
  •   x = self.pool(x)
  •   x = x.view(-1, 18 * 16 *16)
  •   x = F.relu(self.fc1(x))
  •   #Computes the second fully connected layer (activation applied later)
  •   #Size changes from (1, 64) to (1, 10)
  •   x = self.fc2(x)
  •   return(x)

Nota: este ejemplo procede de tutorialespoint; lo mas interesante de este; caso que nos ocupa, es la representación por lotes de la Red-Neuronal-Convolucional.

 

Recopilando:

Las Redes-Neuronales-Convolucionales CNN es una Red-Neuronal de Avance que generalmente se usa para analizar imágenes mediante el procesamiento de datos con una topología similar a una cuadrícula “Kernel”. Las Redes-Neuronales-Convolucionales CNN se llama asi por el concepto de Convolución que es una transformación lineal de dos funciones en una tercera que se superpone a los dos primeras.

 

  • Referencias: Entorno-Moreluz