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: