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: