PyTorch - Sequenzverarbeitung mit Convents

In diesem Kapitel schlagen wir einen alternativen Ansatz vor, der stattdessen auf einem einzigen neuronalen 2D-Faltungsnetzwerk über beide Sequenzen beruht. Jede Schicht unseres Netzwerks codiert Quell-Token auf der Grundlage der bisher erzeugten Ausgabesequenz neu. Aufmerksamkeitsähnliche Eigenschaften sind daher im gesamten Netzwerk allgegenwärtig.

Hier konzentrieren wir uns creating the sequential network with specific pooling from the values included in dataset. Dieser Prozess wird auch am besten im „Bilderkennungsmodul“ angewendet.

Die folgenden Schritte werden verwendet, um mit PyTorch ein Sequenzverarbeitungsmodell mit Klöstern zu erstellen:

Schritt 1

Importieren Sie die erforderlichen Module für die Durchführung der Sequenzverarbeitung mithilfe von Konventen.

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

Schritt 2

Führen Sie die erforderlichen Vorgänge aus, um ein Muster in der entsprechenden Reihenfolge mit dem folgenden Code zu erstellen:

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)

Schritt 3

Kompilieren Sie das Modell und passen Sie das Muster wie unten gezeigt in das erwähnte konventionelle neuronale Netzwerkmodell ein.

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

Die erzeugte Ausgabe ist wie folgt: