Ich hatte die Gelegenheit, Keras zu schreiben, also übersetzte ich es ins Japanische. Getting started with the Keras Sequential model Das sequentielle Modell wird durch Stapeln von Ebenen erstellt. Sie können eine Sequenz erstellen, indem Sie dem Konstruktor der Sequenz eine Instanz der Ebene zuweisen. Die Ebene mit der Bezeichnung "Dicht", "Aktivierung" unten (Dichte ist übrigens das sogenannte vollständig verbundene neuronale Netzwerk).
from Keras.models import Sequential
model = Sequential([
Dense(32, input_dim=784),
Activation('relu'),
Dense(10),
Activation('softmax'),
])
Sie können Ebenen auch mit der Methode .add ()
hinzufügen.
model = Sequential()
model.add(Dense(32, input_dim=784))
model.add(Activation('relu'))
Specifying the input shape Das Modell muss wissen, wie hoch die Anzahl der Dimensionen der Eingabe ist. Daher ist es erforderlich, der ersten Ebene des sequentiellen Modells Informationen zur Eingabedimension zu geben (die anderen Ebenen können automatisch auf die Anzahl der Dimensionen schließen). Es gibt drei Möglichkeiten, dies zu tun.
Folgendes habe ich in meinen Code eingefügt:
model = Sequential()
model.add(Dense(32, input_shape=(784,)))
model = Sequential()
model.add(Dense(32, batch_input_shape=(None, 784)))
# note that batch dimension is "None" here,(Obwohl die Chargengröße Keine ist)
# so the model will be able to process batches of any size(Jetzt können Sie lernen, welche Chargengröße Sie haben)
model = Sequential()
model.add(Dense(32, input_dim=784))
Die folgenden drei Codes haben dieselbe Bedeutung.
model = Sequential()
model.add(LSTM(32, input_shape=(10, 64)))
model = Sequential()
model.add(LSTM(32, batch_input_shape=(None, 10, 64)))
model = Sequential()
model.add(LSTM(32, input_length=10, input_dim=64))
The Merge layer Es ist möglich, mehrere sequentielle Instanzen zu integrieren, sodass eine Ausgabe ausgegeben wird. Die Ausgangssequenz kann auf eine neue Sequenz gelegt werden. Das Folgende ist ein Beispiel und ein konzeptionelles Diagramm von Ebenen.
from keras.layers import Merge
left_branch = Sequential()
left_branch.add(Dense(32, input_dim=784))
right_branch = Sequential()
right_branch.add(Dense(32, input_dim=784))
merged = Merge([left_branch, right_branch], mode='concat')
final_model = Sequential()
final_model.add(merged)
final_model.add(Dense(10, activation='softmax'))
Das Zusammenführen hat mehrere Modi, und Sie können beschreiben, wie zwei Tensoren zusammengeführt werden.
sum
(Standard): Für jedes Element hinzufügen.concat
: Verketten Sie Tensoren. Geben Sie die verketteten Dimensionen mit dem Argument concat_axis
an.mul
: Multipliziere jedes Element.ave
: Durchschnitt der Tensoren.dot
: Inneres Produkt. Geben Sie mit dem Argument dot_axes
an, welche Dimension das innere Produkt annehmen soll.cos
: Nehmen Sie die Kosinusnähe für einen zweidimensionalen Tensor.Jede Berechnungsformel kann im Modusargument unter Verwendung einer Lambda-Formel oder dergleichen beschrieben werden.
merged = Merge([left_branch, right_branch], mode=lambda x, y: x - y)
Wenn Sie ein komplexes Modell erstellen möchten, das nicht durch Sequential and Merge dargestellt werden kann, müssen Sie auf die Funktions-API verweisen.
Compilation Es ist notwendig, den Trainingsprozess vor dem Training des Modells festzulegen. Dies geschieht mit der Methode "compile". Die Methode "compile" verwendet die folgenden drei Argumente.
# for a multi-class classification problem
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
# for a binary classification problem
model.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['accuracy'])
# for a mean squared error regression problem
model.compile(optimizer='rmsprop',
loss='mse')
Training In Keras wird das Training mit der Eingabe und Bezeichnung des Numpy-Arrays durchgeführt. Die "Fit" -Funktion wird häufig in der Lernphase verwendet.
# for a single-input model with 2 classes(binary):(Zwei-Klassen-Klassifizierung)
model = Sequential()
model.add(Dense(1, input_dim=784, activation='softmax'))
model.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['accuracy'])
# generate dummy data(Erstellen Sie entsprechende Eingabedaten)
import numpy as np
data = np.random.random((1000, 784))
labels = np.random.randint(2, size=(1000, 1))
# train the model, interating on the data in batches(Lernen Sie mit Chargengröße 32)
# of 32 samples
model.fit(data, labels, nb_epoch=10, batch_size=32)
# for a multi-input model with 10 classes:(10 Klassenklassifikation)
left_branch = Sequential()
left_branch.add(Dense(32, input_dim=784))
right_branch = Sequential()
right_branch.add(Dense(32, input_dim=784))
merged = Merge([left_branch, right_branch], mode='concat')
model = Sequential()
model.add(merged)
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
# generate dummy data(Entsprechende Eingabedaten erstellen)
import numpy as np
from keras.utils.np_utils import to_categorical
data_1 = np.random.random((1000, 784))
data_2 = np.random.random((1000, 784))
# these are integers between 0 and 9(Generieren Sie ganzzahlige Werte von 0 bis 9)
labels = np.random.randint(10, size=(1000, 1))
# we convert the labels to a binary matrix of size (1000, 10)(Zur Verwendung in Klassifizierungsaufgaben mit mehreren Klassen 1-In heißen Vektor konvertieren)
# for use with categorical_crossentropy
labels = to_categorical(labels, 10)
# train the model
#note that we are passing a list of Numpy arrays as training data
# since the model has 2 inputs(Nimmt zwei Eingaben als Argumente)
model.fit([data_1, data_2], labels, nb_epoch=10, batch_size=32)
Examples Es gibt einige Implementierungsbeispiele. Schauen Sie sich das Original [Keras] an (http://keras.io/getting-started/sequential-model-guide/).
Recommended Posts