Keras Deep Learning - Construire des réseaux de neurones profonds pour améliorer la précision des modèles

Prenez l'habitude d'écrire ensemble ! C'est le 13ème jour de ma participation au "Nuggets Daily New Plan · April Update Challenge", cliquez pour voir les détails de l'événement .

Construire des réseaux de neurones profonds pour améliorer la précision du modèle

Le réseau de neurones que nous avons utilisé dans le modèle précédent n'avait qu'une seule couche cachée entre les couches d'entrée et de sortie. Dans cette section, nous apprendrons à utiliser plusieurs couches cachées dans un réseau de neurones (d'où le nom de réseau de neurones profond) pour explorer l'effet de la profondeur du réseau sur les performances du modèle.

Un réseau neuronal profond signifie qu'il existe plusieurs couches cachées entre la couche d'entrée et la couche de sortie. Plusieurs couches cachées garantissent que les réseaux de neurones peuvent apprendre des relations non linéaires complexes entre les entrées et les sorties, une exigence que les réseaux de neurones simples ne peuvent pas remplir. Une architecture de réseau neuronal profond classique ressemble à ceci :

Architecture de réseau neuronal profond classique

Construire une architecture de réseau neuronal profond en ajoutant plusieurs couches cachées entre les couches d'entrée et de sortie, les étapes sont les suivantes.

  1. Chargez et mettez à l'échelle l'ensemble de données :
(x_train, y_train), (x_test, y_test) = mnist.load_data()

num_pixels = x_train.shape[1] * x_train.shape[2]
x_train = x_train.reshape(-1, num_pixels).astype('float32')
x_test = x_test.reshape(-1, num_pixels).astype('float32')
x_train = x_train / 255.
x_test = x_test / 255.

y_train = np_utils.to_categorical(y_train)
y_test = np_utils.to_categorical(y_test)
num_classes = y_test.shape[1]
复制代码
  1. Créez un modèle avec plusieurs couches masquées entre les couches d'entrée et de sortie :
model = Sequential()
model.add(Dense(512, input_dim=num_pixels, activation='relu'))
model.add(Dense(1024, activation='relu'))
model.add(Dense(64, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))
复制代码

Les informations de modèle pertinentes pour l'architecture du modèle sont les suivantes :

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense (Dense)                (None, 512)               401920    
_________________________________________________________________
dense_1 (Dense)              (None, 1024)              525312    
_________________________________________________________________
dense_2 (Dense)              (None, 64)                65600     
_________________________________________________________________
dense_3 (Dense)              (None, 10)                650       
=================================================================
Total params: 993,482
Trainable params: 993,482
Non-trainable params: 0
_________________________________________________________________
复制代码

Puisqu'il y a plus de couches cachées dans l'architecture du réseau neuronal profond, il y a aussi plus de paramètres dans le modèle.

  1. Une fois le modèle construit, il est temps de compiler et d'ajuster le modèle :
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['acc'])

history = model.fit(x_train, y_train,
                    validation_data=(x_test, y_test),
                    epochs=50,
                    batch_size=64,
                    verbose=1)
复制代码

La précision du modèle formé est d'environ 98.9%, légèrement meilleure que la précision obtenue avec l'architecture de modèle précédemment utilisée en raison de MNISTl' ensemble de données relativement simple. Les pertes et la précision de formation et de test sont les suivantes :

Formation et test de perte et de précision

Comme le montre la figure ci-dessus, la précision de l'ensemble de données d'entraînement est largement meilleure que la précision de l'ensemble de données de test, ce qui indique que le réseau neuronal profond suradapte les données d'entraînement. Dans des études ultérieures, nous découvrirons des moyens d'éviter le surajustement des données d'entraînement.

Liens connexes

Keras Deep Learning - Formation des réseaux de neurones bruts

Je suppose que tu aimes

Origine juejin.im/post/7086640208199811103
conseillé
Classement