PyTorch - обработка последовательностей с помощью конвенций
В этой главе мы предлагаем альтернативный подход, который вместо этого полагается на единую двумерную сверточную нейронную сеть для обеих последовательностей. Каждый уровень нашей сети перекодирует исходные токены на основе уже созданной выходной последовательности. Поэтому свойства, подобные вниманию, распространены по всей сети.
Здесь мы сосредоточимся на creating the sequential network with specific pooling from the values included in dataset. Этот процесс также лучше всего применять в «Модуле распознавания изображений».
Следующие шаги используются для создания модели обработки последовательности с конвенциями с использованием PyTorch:
Шаг 1
Импортируйте необходимые модули для выполнения обработки последовательностей с использованием конвентов.
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
Шаг 2
Выполните необходимые операции для создания шаблона в соответствующей последовательности, используя приведенный ниже код -
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)
Шаг 3
Скомпилируйте модель и поместите шаблон в упомянутую модель обычной нейронной сети, как показано ниже -
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])
Сгенерированный вывод выглядит следующим образом -