Feature extractor y classifier de red neuronal convolucional

Autor: | Última modificación: 23 de agosto de 2022 | Tiempo de Lectura: 3 minutos
Temas en este post:

Los aspectos como el feature extractor y classifier de red neuronal convolucional deben tenerse en cuenta a la hora de enfrentarse a este tipo de análisis en el procesamiento del Big Data dentro del Deep Learning, puesto que estas etapas son una parte fundamental de su desarrollo.

Ahora, en este post, te explicamos cada una de estas capas: feature extractor y classifier de red neuronal convolucional.

Feature extractor y classifier de red neuronal convolucional

Ya debes haber notado que la CNN tiene dos etapas: feature extractor y classifier de red neuronal convolucional. De manera que primero extrae unos determinados patrones haciendo uso de la primera etapa (base model), que son los que mejor le vienen a la etapa posterior de clasificador (top model) para llevar a cabo su trabajo con la mayor precisión posible.

Feature extractor 

La etapa de feature extraction va de menos a más, es decir, las primeras capas convolucionales detectan líneas en diferentes orientaciones, las siguientes detectan ya formas y colores, las siguientes patrones más complejos, etc.

Classifier

La segunda etapa del clasificador está compuesta por capas densas, que son las capas que se usan en las redes neuronales tradicionales. Por lo que, finalmente, podría entenderse a una CNN como un conjunto de etapas convolucionales acopladas a una red neuronal tradicional, que es la que clasifica los patrones extraídos por las convoluciones y devuelve unas probabilidades para cada clase.

¿Y cómo va aprendiendo? De la misma forma que una red neuronal tradicional.

Así, al final, lo que tenemos es una red que aprende por sí misma y que elige las características ella sola, de manera que no hace falta que nos preocupemos de qué características escogemos para clasificar.

Ejemplo práctico

Vamos a implementar una red que permita diferenciar entre 10 tipos de objetos. Para ello, emplearemos el dataset CIFAR-10, que consta de 60.000 imágenes en color, de 32×32 píxeles, repartidas en las 10 clases que puedes apreciar a continuación.

El dataset está dividido en 50.000 imágenes para entrenamiento y 10.000 para test.

cifar10

Para esta implementación no vamos a utilizar TensorFlow, sino Keras. A partir de ahora, utilizaremos la versión de TensorFlow que viene por defecto en Google Colab.

# Vamos a implementar una red que permita diferenciar entre 10 tipos de objetos
# Dataset original e info: https://www.cs.toronto.edu/~kriz/cifar.html

# Imports necesarios
import numpy as np
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten, Conv2D, MaxPooling2D
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.utils import to_categorical

# Para hacerlo reproducible
np.random.seed(42)

# Cargamos el dataset
(X_train, Y_train), (X_test, Y_test) = cifar10.load_data()
Feature extractor y classifier de red neuronal convolucional 1
# Vamos a ver algunas imágenes de cada clase
import matplotlib.pyplot as plt
class_names = ['airplane','automobile','bird','cat','deer',
               'dog','frog','horse','ship','truck']
fig = plt.figure(figsize=(8,3))
for i in range(len(class_names)):
  ax = fig.add_subplot(2, 5, 1 + i, xticks=[], yticks=[])
  idx = np.where(Y_train[:]==i)[0]
  features_idx = X_train[idx,::]
  img_num = np.random.randint(features_idx.shape[0])
  im = features_idx[img_num,::]
  ax.set_title(class_names[i])
  #im = np.transpose(features_idx[img_num,::], (1, 2, 0))
  plt.imshow(im)
plt.show()
Feature extractor y classifier de red neuronal convolucional 2
# Inicializamos el modelo
model = Sequential()

# Definimos una capa convolucional
model.add(Conv2D(128, kernel_size=(3, 3), activation='relu', input_shape=(32, 32, 3)))

# Definimos una segunda capa convolucional
model.add(Conv2D(128, kernel_size=(3, 3), activation='relu'))

# Definimos una tercera capa convolucional
model.add(Conv2D(128, kernel_size=(3, 3), activation='relu'))

# Añadimos nuestro clasificador
model.add(Flatten())
model.add(Dense(1024, activation='relu'))
model.add(Dense(10, activation='softmax'))

# Compilamos el modelo
model.compile(loss='categorical_crossentropy',
              optimizer=Adam(lr=0.0001, decay=1e-6),
              metrics=['accuracy'])

# Entrenamos el modelo
model.fit(X_train, to_categorical(Y_train),
          batch_size=128,
          shuffle=True,
          epochs=10,
          validation_data=(X_test, to_categorical(Y_test)))

# Evaluamos el modelo
scores = model.evaluate(X_test, to_categorical(Y_test))

print('Loss: %.3f' % scores[0])
print('Accuracy: %.3f' % scores[1])
Feature extractor y classifier de red neuronal convolucional 3

Continúa instruyéndote en Big Data

En este post, te hemos expuesto cómo funcionan el feature extractor y classifier de red neuronal convolucional dentro del análisis de redes neuronales convolucionales para el desarrollo del Deep Learning dentro del manejo del procesamiento de los macrodatos. Ahora, esperamos que te haya servido de ayuda y puedas comprender más cómo se instauran estos factores en tu estudio de Big Data.

Por otra parte, desde KeepCoding te ofrecemos la mejor opción para seguir instruyéndote: nuestro Bootcamp Full Stack Big Data, Inteligencia Artificial & Machine Learning. En su desarrollo, podrás profundizar en el análisis de los datos mediante el reporting por medio del uso de una herramienta llamada Tableau, muy conocida en el mundo del Business Intelligence del Big Data. Por otra parte, comprenderás que el análisis visual es el objetivo final de un procesamiento de los macrodatos, puesto que, a través de este, podrás proporcionar información muy útil para una empresa como respuesta a los problemas de negocio. Todo ello, con un aspecto personalizado, ágil e inmediato. ¡Inscríbete y empieza ahora!

👉 Descubre más del Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp ¡Descarga el temario!

👉 Prueba el Bootcamp Gratis por una Semana ¡Empieza ahora mismo!

👉 Conoce nuestros otros Bootcamps en Programación y Tecnología

[email protected]

¿Sabías que hay más de 5.000 vacantes para desarrolladores de Big Data sin cubrir en España? 

En KeepCoding llevamos desde 2012 guiando personas como tú a áreas de alta empleabilidad y alto potencial de crecimiento en IT con formación de máxima calidad.

 

Porque creemos que un buen trabajo es fuente de libertad, independencia, crecimiento y eso ¡cambia historias de vida!


¡Da el primer paso!