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 Redes–Convolucionales (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 Redes–Convolucionales (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 Redes–Convolucionales (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