En aquest tema, aprendrem com crear capes i models personalitzats a TensorFlow. Això és especialment útil quan les capes predefinides no s'ajusten exactament a les necessitats del nostre projecte. A més, la creació de models personalitzats ens permet tenir un control més gran sobre l'arquitectura i el comportament del nostre model.

Objectius del tema

  1. Entendre la necessitat de capes i models personalitzats.
  2. Aprendre a crear capes personalitzades.
  3. Aprendre a crear models personalitzats.
  4. Implementar un exemple pràctic de capa i model personalitzat.

  1. Necessitat de capes i models personalitzats

Per què capes personalitzades?

  • Flexibilitat: Permet implementar operacions específiques que no estan disponibles en les capes predefinides.
  • Optimització: Pot ajudar a optimitzar el rendiment del model per a tasques específiques.
  • Innovació: Facilita la investigació i desenvolupament de noves arquitectures de xarxes neuronals.

Per què models personalitzats?

  • Control: Proporciona un control complet sobre l'arquitectura del model.
  • Modularitat: Permet crear models complexos a partir de components més senzills.
  • Reutilització: Facilita la reutilització de components en diferents projectes.

  1. Creació de capes personalitzades

Exemple bàsic de capa personalitzada

import tensorflow as tf

class MyCustomLayer(tf.keras.layers.Layer):
    def __init__(self, units=32, **kwargs):
        super(MyCustomLayer, self).__init__(**kwargs)
        self.units = units

    def build(self, input_shape):
        self.w = self.add_weight(shape=(input_shape[-1], self.units),
                                 initializer='random_normal',
                                 trainable=True)
        self.b = self.add_weight(shape=(self.units,),
                                 initializer='zeros',
                                 trainable=True)

    def call(self, inputs):
        return tf.matmul(inputs, self.w) + self.b

Explicació del codi

  • __init__: Inicialitza la capa amb el nombre d'unitats especificades.
  • build: Crea els pesos de la capa (w i b). Aquesta funció es crida una vegada quan es coneix la forma de les dades d'entrada.
  • call: Defineix la lògica de la capa. En aquest cas, simplement aplica una operació de matriu (matmul) i afegeix un biaix (b).

  1. Creació de models personalitzats

Exemple bàsic de model personalitzat

class MyCustomModel(tf.keras.Model):
    def __init__(self):
        super(MyCustomModel, self).__init__()
        self.dense1 = tf.keras.layers.Dense(64, activation='relu')
        self.custom_layer = MyCustomLayer(32)
        self.dense2 = tf.keras.layers.Dense(10)

    def call(self, inputs):
        x = self.dense1(inputs)
        x = self.custom_layer(x)
        return self.dense2(x)

Explicació del codi

  • __init__: Inicialitza les capes del model, incloent-hi la capa personalitzada.
  • call: Defineix la lògica del model, especificant com les dades passen a través de les capes.

  1. Exemple pràctic

Construcció d'un model amb una capa personalitzada

import numpy as np

# Generar dades de mostra
x_train = np.random.random((1000, 32))
y_train = np.random.random((1000, 10))

# Crear el model
model = MyCustomModel()

# Compilar el model
model.compile(optimizer='adam', loss='mse')

# Entrenar el model
model.fit(x_train, y_train, epochs=10)

Explicació del codi

  • Generació de dades: Es generen dades de mostra aleatòries per entrenar el model.
  • Creació del model: Es crea una instància del model personalitzat.
  • Compilació del model: Es compila el model especificant l'optimitzador i la funció de pèrdua.
  • Entrenament del model: Es realitza l'entrenament del model amb les dades de mostra.

Resum

En aquest tema, hem après a crear capes i models personalitzats a TensorFlow. Hem vist com les capes personalitzades ens permeten implementar operacions específiques i com els models personalitzats ens proporcionen un control complet sobre l'arquitectura del model. Finalment, hem implementat un exemple pràctic per consolidar els conceptes apresos.

En el següent tema, explorarem TensorFlow Hub i com podem utilitzar models preentrenats per millorar els nostres projectes.

© Copyright 2024. Tots els drets reservats