En aquest tema, aprendrem a crear una xarxa neuronal simple utilitzant TensorFlow i Keras. Aquest és un pas fonamental per a qualsevol persona que vulgui endinsar-se en el món de l'aprenentatge profund (deep learning). Començarem amb una introducció als conceptes bàsics i després passarem a la implementació pràctica.

Objectius

  • Entendre els components bàsics d'una xarxa neuronal.
  • Aprendre a definir i compilar un model de xarxa neuronal amb Keras.
  • Entrenar i avaluar el model utilitzant un conjunt de dades senzill.

Components d'una xarxa neuronal

Una xarxa neuronal està composta per diverses capes de neurones. Els components principals són:

  1. Capa d'entrada: Rep les dades d'entrada.
  2. Capes ocultes: Realitzen càlculs i transformacions sobre les dades.
  3. Capa de sortida: Proporciona la predicció final.

Passos per crear una xarxa neuronal simple

  1. Importar les llibreries necessàries.
  2. Preparar el conjunt de dades.
  3. Definir el model.
  4. Compilar el model.
  5. Entrenar el model.
  6. Avaluar el model.

  1. Importar les llibreries necessàries

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical

  1. Preparar el conjunt de dades

Utilitzarem el conjunt de dades MNIST, que conté imatges de dígits escrits a mà.

# Carregar el conjunt de dades MNIST
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# Normalitzar les dades (escala de 0 a 1)
x_train = x_train / 255.0
x_test = x_test / 255.0

# Convertir les etiquetes a one-hot encoding
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

  1. Definir el model

Crearem un model seqüencial amb una capa d'entrada, una capa oculta i una capa de sortida.

model = Sequential([
    Dense(128, activation='relu', input_shape=(784,)),  # Capa oculta amb 128 neurones
    Dense(10, activation='softmax')  # Capa de sortida amb 10 neurones (una per cada dígit)
])

  1. Compilar el model

Especificarem la funció de pèrdua, l'optimitzador i les mètriques per avaluar el model.

model.compile(
    optimizer='adam',
    loss='categorical_crossentropy',
    metrics=['accuracy']
)

  1. Entrenar el model

Entrenarem el model amb el conjunt de dades d'entrenament.

model.fit(x_train.reshape(-1, 784), y_train, epochs=5, batch_size=32)

  1. Avaluar el model

Avaluarem el model amb el conjunt de dades de prova.

loss, accuracy = model.evaluate(x_test.reshape(-1, 784), y_test)
print(f'Loss: {loss}')
print(f'Accuracy: {accuracy}')

Exemples pràctics

Exemple complet

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical

# Carregar el conjunt de dades MNIST
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# Normalitzar les dades (escala de 0 a 1)
x_train = x_train / 255.0
x_test = x_test / 255.0

# Convertir les etiquetes a one-hot encoding
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)

# Definir el model
model = Sequential([
    Dense(128, activation='relu', input_shape=(784,)),  # Capa oculta amb 128 neurones
    Dense(10, activation='softmax')  # Capa de sortida amb 10 neurones (una per cada dígit)
])

# Compilar el model
model.compile(
    optimizer='adam',
    loss='categorical_crossentropy',
    metrics=['accuracy']
)

# Entrenar el model
model.fit(x_train.reshape(-1, 784), y_train, epochs=5, batch_size=32)

# Avaluar el model
loss, accuracy = model.evaluate(x_test.reshape(-1, 784), y_test)
print(f'Loss: {loss}')
print(f'Accuracy: {accuracy}')

Exercicis pràctics

Exercici 1: Modificar el nombre de neurones

Prova de modificar el nombre de neurones a la capa oculta i observa com afecta l'exactitud del model.

Exercici 2: Afegir una capa oculta addicional

Afegeix una segona capa oculta al model i compara els resultats amb el model original.

Solucions

Solució a l'Exercici 1

model = Sequential([
    Dense(64, activation='relu', input_shape=(784,)),  # Capa oculta amb 64 neurones
    Dense(10, activation='softmax')  # Capa de sortida amb 10 neurones
])

Solució a l'Exercici 2

model = Sequential([
    Dense(128, activation='relu', input_shape=(784,)),  # Primera capa oculta amb 128 neurones
    Dense(64, activation='relu'),  # Segona capa oculta amb 64 neurones
    Dense(10, activation='softmax')  # Capa de sortida amb 10 neurones
])

Resum

En aquest tema, hem après a crear una xarxa neuronal simple utilitzant TensorFlow i Keras. Hem cobert els passos des de la preparació del conjunt de dades fins a l'avaluació del model. A més, hem proporcionat exercicis pràctics per reforçar els conceptes apresos. En el següent tema, explorarem les funcions d'activació en més detall.

© Copyright 2024. Tots els drets reservats