Letztes Mal Erstellen Sie ein Bilderkennungsprogramm, das Affen, Inoshi und Krähen anhand der erstellten Trainingsdaten unterscheidet.
https://keras.io/ja/
Keras ist eine in Python geschriebene übergeordnete neuronale Netzwerkbibliothek, die auf TensorFlow, CNTK oder Theano ausgeführt werden kann.
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
from keras.utils import np_utils
import keras
import numpy as np
Der allgemeine Ablauf ist wie folgt:
animal.npy
classes = ["monkey", "boar", "crow"]
num_classes = len(classes)
image_size = 50
def main():
X_train, X_test, y_train, y_test = np.load("./animal.npy", allow_pickle=True)
X_train = X_train.astype("float") / 256
X_test = X_test.astype("float") / 256
y_train = np_utils.to_categorical(y_train, num_classes)
y_test = np_utils.to_categorical(y_test, num_classes)
model = model_train(X_train, y_train)
model_eval(model, X_test, y_test)
・ To_categorical
hat ein Array von [0, 1, 2]
[[1, 0, 0]
[0, 1, 0]
[0, 0, 1]]
Konvertieren Sie also in ein Array, das 1 nur im Index der richtigen Antwort und 0 an anderen Stellen enthält.
Beziehen Sie sich auf die 34. Zeile und danach auf den folgenden Code Referenz: https://github.com/keras-team/keras/blob/master/examples/cifar10_cnn.py
def model_train(X, y):
model = Sequential()
model.add(Conv2D(32, (3,3), padding='same', input_shape=X.shape[1:]))
model.add(Activation('relu'))
model.add(Conv2D(32, (3,3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.25))
model.add(Conv2D(64, (3,3), padding='same'))
model.add(Activation('relu'))
model.add(Conv2D(64, (3,3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(3))
model.add(Activation('softmax'))
opt = keras.optimizers.rmsprop(lr=0.0001, decay=1e-6)
model.compile(loss='categorical_crossentropy',
optimizer=opt, metrics=['accuracy'])
model.fit(X, y, batch_size=32, epochs=100)
#Modell speichern
model.save("./animal_cnn.h5")
return model
model = Sequential()
Erstellen Sie ein Modellobjekt
model.add(Conv2D(...))
Fügen Sie eine Ebene hinzu
model.add(Activation('relu'))
Fügen Sie eine Ebene hinzu, die "ReLU (Rectified Linear Unit)" als Aktivierungsfunktion verwendet
model.add(MaxPooling2D(pool_size=(2,2)))
Fügen Sie eine Ebene für maximales Pooling hinzu (Teilen Sie die Eingabe in vorgegebene Bereiche und geben Sie den Maximalwert für jeden Bereich aus).
model.add(Dropout(0.25))
25% verwerfen (was?) Um Datenverzerrungen zu beseitigen
opt = keras.optimizers.rmsprop(lr=0.0001, decay=1e-6)
Optimierungserklärung. Mit der Methode "optimizers.rmsprop" beträgt die Lernrate 0,0001 und die Rate zum Verringern der Lernrate beträgt jedes Mal 0,000001.
model.compile()
Modell kompilieren.
model.fit(X, y, batch_size=32, epochs=100)
Trainiere mit X
und y
.
batch_size
ist die Anzahl der Daten, die in einem Training verwendet werden.
Wie viele Sätze von "Epochen" trainieren?
Überprüfen Sie das Modell, das mit der Evaluierungsmethode erstellt wurde.
def model_eval(model, X, y):
scores = model.evaluate(X, y, verbose=1)
print('test Loss: ', scores[0])
print('test Accuracy: ', scores[1])
Recommended Posts