Hinweise zum Erstellen und Klassifizieren von CNNs mit Keras mithilfe des CIFAR-10-Datasets
from keras.models import Sequential
from keras.layers.convolutional import Conv2D
from keras.layers.pooling import MaxPool2D
from keras.optimizers import Adam
from keras.layers.core import Dense, Activation, Dropout, Flatten
from keras.utils import plot_model
from keras.callbacks import TensorBoard
from keras.datasets import cifar10
from keras.utils import np_utils
(X_train, y_train),(X_test, y_test) = cifar10.load_data()
Wird gelagert.
Normalisieren Sie jeden Pixelwert im Bereich von 0-1
#Geben Sie die Konvertierung in float ein
X_train = X_train.astype('float32')
X_test = X_test.astype('float32')
#Normalisieren Sie jeden Pixelwert
X_train /= 255.0
X_test /= 255.0
Y_train = np_utils.to_categorical(y_train, nb_classes)
Y_test = np_utils.to_categorical(y_test, nb_classes)
Mit np_utils.to_categorical in eine One-Hot-Darstellung für nb_classes-Klassen konvertieren.
Da es diesmal 10 Klassen gibt, setzen wir nb_classes = 10
.
Definieren Sie tatsächlich das Modell,
#Modelldefinition
model = Sequential()
model.add(Conv2D(32,3,input_shape=(32,32,3)))
model.add(Activation('relu'))
model.add(Conv2D(32,3))
model.add(Activation('relu'))
model.add(MaxPool2D(pool_size=(2,2)))
model.add(Conv2D(64,3))
model.add(Activation('relu'))
model.add(MaxPool2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(1024))
model.add(Activation('relu'))
model.add(Dropout(1.0))
model.add(Dense(nb_classes, activation='softmax'))
adam = Adam(lr=1e-4)
model.compile(optimizer=adam, loss='categorical_crossentropy', metrics=["accuracy"])
Definieren Sie ein Modellobjekt mit model.Sequential ().
Es ist möglich, Elemente mit model.add () hinzuzufügen.
Das erste model.add () fügt eine 32x32-Faltungsschicht (Kernel 3x3) hinzu, und da das Eingabebild ein 32x32-RGB-Bild ist, ist die Eingabeebene input_shape (32,32,3). Es kann durch
definiert werden.
Verwenden Sie Activation (), um die Aktivierungsfunktion hinzuzufügen, und Dense (), um die vollständig verbundene Ebene hinzuzufügen.
Stellen Sie model.compile () ein, um Adam als Optimierungsmethode, Kreuzentropie als Fehlerfunktion und Genauigkeit als Berechnung zu erhalten.
history = model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=1, validation_split=0.1)
Sie können mit model.fit () lernen. Dieses Mal setzen wir nb_epoch = 100
, um die Anzahl der Epochen auf 100 zu setzen.
varidation_split ist ein Parameter, der einen bestimmten Prozentsatz der Trainingsdaten für den Test verwendet. Dieses Mal werden 10% für den Test verwendet.
Visualisieren Sie Daten mit Keras
#Zeichnen Sie das Modell
plot_model(model, to_file='./model2.png')
Da das trainierte Modell als Datei gespeichert werden kann, können die Modellkonfigurationsdaten als JSON-Datei und die Modellgewichtsdaten als HDF5-Datei gespeichert werden.
json_string = model.to_json()
open(os.path.join('./', 'cnn_model.json'), 'w').write(json_string)
model.save_weights(os.path.join('./', 'cnn_model_weight.hdf5'))
Da diesmal Tensorflow für das Backend verwendet wird, kann Tensorboar auch unten verwendet werden. [Keras / TensorFlow] Verwenden von TensorBoard mit Keras
Wir haben CNN mit Keras konstruiert und 10 Kategorien mit CIFAR-10 klassifiziert. Von hier aus werde ich verschiedene Dinge ausprobieren.
Source Code https://github.com/sasayabaku/Machine-Learning/blob/master/Example_CNN/cifar10.ipynb
Keras Documentation Deep Learning beginnend mit Keras
Recommended Posts