PyTorch - przetwarzanie sekwencyjne z konwentów

W tym rozdziale proponujemy alternatywne podejście, które zamiast tego opiera się na pojedynczej splotowej sieci neuronowej 2D w obu sekwencjach. Każda warstwa naszej sieci ponownie koduje tokeny źródłowe na podstawie dotychczas wyprodukowanej sekwencji wyjściowej. Właściwości przypominające uwagę są zatem wszechobecne w całej sieci.

Tutaj skupimy się na creating the sequential network with specific pooling from the values included in dataset. Ten proces najlepiej zastosować również w „module rozpoznawania obrazu”.

Poniższe kroki służą do tworzenia modelu przetwarzania sekwencji z konwentów przy użyciu PyTorch -

Krok 1

Zaimportuj niezbędne moduły do ​​przetwarzania sekwencji przy użyciu konwentów.

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

Krok 2

Wykonaj niezbędne operacje, aby utworzyć wzór w odpowiedniej kolejności, używając poniższego kodu -

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)

Krok 3

Skompiluj model i dopasuj wzór do wspomnianego konwencjonalnego modelu sieci neuronowej, jak pokazano poniżej -

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

Wygenerowane dane wyjściowe są następujące -