Klassifizierungs-Performance messen
Messen Sie die Genauigkeit eines Netzes zur Erkennung von Ziffern. Das Netz wurde mit Bildern der MNIST-Datenbank handgeschriebener Ziffern trainiert.
Erstellen Sie als ersten Schritt die Übungs- und Validierungsdaten.
resource = ResourceObject["MNIST"];
trainingData = ResourceData[resource, "TrainingData"];
testData = ResourceData[resource, "TestData"];
RandomSample[trainingData, 5]
Definieren Sie ein Convolutional Neural Network, das 28x28-Graustufenbilder als Input erhält.
lenet = NetChain[{
ConvolutionLayer[20, 5], Ramp,
PoolingLayer[2, 2],
ConvolutionLayer[50, 5], Ramp,
PoolingLayer[2, 2],
FlattenLayer[],
500, Ramp, 10,
SoftmaxLayer[]},
"Output" -> NetDecoder[{"Class", Range[0, 9]}],
"Input" -> NetEncoder[{"Image", {28, 28}, "Grayscale"}]
]
Trainieren Sie das Netzwerk drei Trainingsrunden lang.
lenet = NetTrain[lenet, trainingData, ValidationSet -> testData,
MaxTrainingRounds -> 3]
Testen Sie das trainierte Netz direkt mit zufällig ausgewählten Bildern aus dem Validierungssatz.
imgs = Keys @ RandomSample[testData, 5];
Thread[imgs -> lenet[imgs]]
Erzeugen Sie ein ClassifierMeasurements-Objekt aus dem trainierten Netz und dem Validierungssatz.
cm = ClassifierMeasurements[lenet, testData]
Ermitteln Sie die Güte des Netzwerks anhand des Validierungssatzes.
cm["Accuracy"]
Führen Sie Beispiele der Ziffer 3 an, die fälschlicherweise als 8 klassifiziert wurden.
cm[{"Examples", 3 -> 8}]
Visualisieren Sie die Wahrheitsmatrix der Netzwerkvorhersagen in Bezug auf den Validierungssatz.
cm["ConfusionMatrixPlot"]