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:
- Capa d'entrada: Rep les dades d'entrada.
- Capes ocultes: Realitzen càlculs i transformacions sobre les dades.
- Capa de sortida: Proporciona la predicció final.
Passos per crear una xarxa neuronal simple
- Importar les llibreries necessàries.
- Preparar el conjunt de dades.
- Definir el model.
- Compilar el model.
- Entrenar el model.
- Avaluar el model.
- 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
- 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)
- 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) ])
- Compilar el model
Especificarem la funció de pèrdua, l'optimitzador i les mètriques per avaluar el model.
- Entrenar el model
Entrenarem el model amb el conjunt de dades d'entrenament.
- 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.
Curs de TensorFlow
Mòdul 1: Introducció a TensorFlow
- Què és TensorFlow?
- Configuració de TensorFlow
- Conceptes bàsics de TensorFlow
- Hola món amb TensorFlow
Mòdul 2: Conceptes bàsics de TensorFlow
Mòdul 3: Gestió de dades a TensorFlow
Mòdul 4: Construcció de xarxes neuronals
- Introducció a les xarxes neuronals
- Creació d'una xarxa neuronal simple
- Funcions d'activació
- Funcions de pèrdua i optimitzadors
Mòdul 5: Xarxes neuronals convolucionals (CNNs)
Mòdul 6: Xarxes neuronals recurrents (RNNs)
- Introducció a les RNNs
- Construcció d'una RNN
- Memòria a llarg termini (LSTM)
- Unitats recurrents amb porta (GRUs)
Mòdul 7: Tècniques avançades de TensorFlow
- Capes i models personalitzats
- TensorFlow Hub
- Aprenentatge per transferència
- Ajust de hiperparàmetres