PyTorch: procesamiento de secuencias mediante convenciones

En este capítulo, proponemos un enfoque alternativo que, en cambio, se basa en una única red neuronal convolucional 2D para ambas secuencias. Cada capa de nuestra red recodifica los tokens originales en función de una secuencia de salida ya generada. Por lo tanto, las propiedades similares a la atención son comunes en toda la web.

Aquí nos centraremos en crear una red en serie con un grupo específico de valores incluidos en el conjunto de datos… Este proceso también se utiliza mejor en el módulo de reconocimiento de imágenes.

Red serial

Los siguientes pasos se utilizan para crear un modelo de procesamiento de secuencia con convenciones utilizando PyTorch:

Paso 1

Importe los módulos necesarios para realizar el procesamiento de secuencias mediante convenciones.

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

Paso 2

Realice las operaciones necesarias para crear la plantilla en la secuencia adecuada utilizando el siguiente código:

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)

Paso 3

Compile el modelo y coloque la muestra en el modelo de red neuronal regular mencionado como se muestra a continuación:

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])

El resultado generado se ve así:

Modelo de red neuronal

🚫