PyTorch - Traitement séquentiel avec couvents

Dans ce chapitre, nous proposons une approche alternative qui repose plutôt sur un seul réseau de neurones convolutifs 2D sur les deux séquences. Chaque couche de notre réseau recode les jetons source sur la base de la séquence de sortie produite jusqu'à présent. Les propriétés de type attention sont donc omniprésentes dans tout le réseau.

Ici, nous allons nous concentrer sur creating the sequential network with specific pooling from the values included in dataset. Ce processus est également mieux appliqué dans «Module de reconnaissance d'image».

Les étapes suivantes sont utilisées pour créer un modèle de traitement de séquence avec des couvents à l'aide de PyTorch -

Étape 1

Importez les modules nécessaires à l'exécution du traitement séquentiel à l'aide de couvents.

import keras 
from keras.datasets import mnist 
from keras.models import Sequential 
from keras.layers import Dense, Dropout, Flatten 
from keras.layers import Conv2D, MaxPooling2D 
import numpy as np

Étape 2

Effectuez les opérations nécessaires pour créer un motif dans l'ordre respectif en utilisant le code ci-dessous -

batch_size = 128 
num_classes = 10 
epochs = 12
# input image dimensions 
img_rows, img_cols = 28, 28
# the data, split between train and test sets 
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(60000,28,28,1) 
x_test = x_test.reshape(10000,28,28,1)
print('x_train shape:', x_train.shape) 
print(x_train.shape[0], 'train samples') 
print(x_test.shape[0], 'test samples')
y_train = keras.utils.to_categorical(y_train, num_classes) 
y_test = keras.utils.to_categorical(y_test, num_classes)

Étape 3

Compilez le modèle et ajustez le modèle dans le modèle de réseau neuronal conventionnel mentionné comme indiqué ci-dessous -

model.compile(loss = 
keras.losses.categorical_crossentropy, 
optimizer = keras.optimizers.Adadelta(), metrics = 
['accuracy'])
model.fit(x_train, y_train, 
batch_size = batch_size, epochs = epochs, 
verbose = 1, validation_data = (x_test, y_test)) 
score = model.evaluate(x_test, y_test, verbose = 0) 
print('Test loss:', score[0]) 
print('Test accuracy:', score[1])

La sortie générée est la suivante -