PyTorch: procesamiento de secuencias con conventos

En este capítulo, proponemos un enfoque alternativo que, en cambio, se basa en una única red neuronal convolucional 2D en ambas secuencias. Cada capa de nuestra red vuelve a codificar los tokens de origen sobre la base de la secuencia de salida producida hasta ahora. Por lo tanto, las propiedades similares a la atención son omnipresentes en toda la red.

Aquí, nos centraremos en creating the sequential network with specific pooling from the values included in dataset. Este proceso también se aplica mejor en el "Módulo de reconocimiento de imágenes".

Los siguientes pasos se utilizan para crear un modelo de procesamiento de secuencia con conventos usando PyTorch:

Paso 1

Importe los módulos necesarios para la ejecución del procesamiento de secuencias utilizando conventos.

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 un patrón en la secuencia respectiva 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 ajuste el patrón en el modelo de red neuronal convencional 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])

La salida generada es la siguiente: