Redes Neuronales
Redes Neuronales
Redes Neuronales
Construirás un clasificador de regresión logística para reconocer a los gatos. Esta tarea lo guiará a través
de cómo hacer esto con una mentalidad de red neuronal, y así también perfeccionará sus intuiciones sobre
el aprendizaje profundo.
Instrucciones:
No utilice bucles (para / mientras) en su código
Aprenderás a:
Construye la arquitectura general de un algoritmo de aprendizaje
Inicializando parámetros
Cálculo de la función de costes y su gradiente.
Usando un algoritmo de optimización (pendiente de gradiente)
Reúna las tres funciones anteriores en una función de modelo principal, en el orden
correcto.
1 - PACKAGES
Primero, ejecutemos la celda a continuación para importar todos los paquetes que necesitará durante esta
asignación.
2 – DATA SET
Se le proporciona un conjunto de datos ("data.h5") que contiene:
- un conjunto de entrenamiento de imágenes m_train etiquetadas como cat (y = 1) o no cat (y = 0)
- un conjunto de prueba de m_test imágenes etiquetadas como cat o no cat
- cada imagen es de forma (num_px, num_px, 3) donde 3 es para los 3 canales (RGB). Por lo tanto, cada
imagen es cuadrada (altura = num_px) y (ancho = num_px).
Construirá un algoritmo simple de reconocimiento de imágenes que puede clasificar correctamente las
imágenes como cat o no cat.
Se agregó "_orig" al final de los conjuntos de datos de imagen (entrenar y probar) porque los vamos a
preprocesar. Después del preprocesamiento, terminaremos con train_set_x y test_set_x (las etiquetas
train_set_y y test_set_y no necesitan ningún preprocesamiento).
Cada línea de su train_set_x_orig y test_set_x_orig es una matriz que representa una imagen. Puedes
visualizar un ejemplo ejecutando el siguiente código. (Puede cambiar el valor del índice y volver a ejecutar
para ver otras imágenes).
Muchos errores de software en el aprendizaje profundo provienen de tener dimensiones de matriz / vector
que no encajan. Si puede mantener sus dimensiones matriciales / vectoriales rectas, recorrerá un largo
camino hacia la eliminación de muchos errores.
ACTIVIDAD 1: Encuentra los valores para:
- m_train (número de ejemplos de entrenamiento)
- m_test (número de ejemplos de prueba)
- num_px (= altura = ancho de una imagen de entrenamiento)
Recuerde que train_set_x_orig es una matriz numpy de forma (m_train, num_px, num_px, 3). Por ejemplo,
puede acceder a m_train escribiendo train_set_x_orig.shape [0].
m_train =
m_test =
num_px =
Para mayor comodidad, ahora debe cambiar la forma de las imágenes de forma (num_px, num_px, 3) en
una variedad de formas (num_px ∗∗ num_px ∗∗ 3, 1). Después de esto, nuestro conjunto de datos de
entrenamiento (y prueba) es una matriz numpy donde cada columna representa una imagen aplanada.
Debe haber m_train (respectivamente m_test) columnas.
ACTIVIDAD 2: remodelar los conjuntos de datos de entrenamiento y prueba para que las imágenes de
tamaño (num_px, num_px, 3) se aplanen en vectores de forma individuales (num_px ∗∗ num_px ∗∗ 3, 1).
Un truco cuando desea aplanar una matriz X de forma (a, b, c, d) a una matriz X_flatten de forma (b ∗∗ c ∗∗
d, a) es utilizar: X_flatten = X.reshape (X.shape [0], -1) .T # X.T es la transposición de X
train_set_x_flatten =
test_set_x_flatten =
3 – PRE PROCESAMIENTO
Para representar imágenes en color, se deben especificar los canales rojo, verde y azul (RGB) para cada
píxel, por lo que el valor del píxel es en realidad un vector de tres números que van de 0 a 255.
Un paso de preprocesamiento común en el aprendizaje automático es centrar y estandarizar su conjunto
de datos, lo que significa que resta la media de toda la matriz numpy de cada ejemplo y luego divide cada
ejemplo por la desviación estándar de la matriz numpy completa. Pero para los conjuntos de datos de
imágenes, es más simple y conveniente, y funciona casi tan solo para dividir cada fila del conjunto de
datos por 255 (el valor máximo de un canal de píxeles).
Vamos a estandarizar nuestro conjunto de datos.
Recordar:
Los pasos comunes para pre procesar un nuevo conjunto de datos son:
Determine las dimensiones y formas del problema (m_train, m_test, num_px, ...)
Cambie la forma de los conjuntos de datos de modo que cada ejemplo sea ahora un vector de
tamaño (num_px * num_px * 3, 1)
"Estandarizar" los datos
def initialize_with_zeros(dim):
"""
Esta función crea un vector de ceros de forma (dim, 1) para w e inicializa b a 0.
Entrada:
dim - tamaño del vector w que queremos (o número de parámetros en este caso)
Salida:
w - vector de forma inicializado (dim, 1)
b - escalar inicializado (corresponde al sesgo) """
w=
b=
return w, b
def sigmoid(z):
s=
return s