PyTorch - Elaborazione di sequenze con conventi
In questo capitolo, proponiamo un approccio alternativo che si basa invece su una singola rete neurale convoluzionale 2D attraverso entrambe le sequenze. Ogni strato della nostra rete ricodifica i token sorgente sulla base della sequenza di output prodotta finora. Le proprietà simili all'attenzione sono quindi pervasive in tutta la rete.
Qui ci concentreremo su creating the sequential network with specific pooling from the values included in dataset. Questo processo è anche meglio applicato nel "Modulo di riconoscimento delle immagini".
I seguenti passaggi vengono utilizzati per creare un modello di elaborazione di sequenze con conventi utilizzando PyTorch -
Passo 1
Importare i moduli necessari per l'esecuzione dell'elaborazione della sequenza utilizzando conventi.
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
Passo 2
Eseguire le operazioni necessarie per creare un modello nella rispettiva sequenza utilizzando il codice seguente:
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)
Passaggio 3
Compilare il modello e adattare il modello nel modello di rete neurale convenzionale citato come mostrato di seguito -
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])
L'output generato è il seguente: