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"]
