Bilderkennung mittels Deep Learning
Deep Learning kann erfolgreich auf viele Probleme in der Bildverarbeitung und Computer Vision angewendet werden. Mit NetChain und NetTrain können Sie ein neuronales Netz definieren und trainieren, handgeschriebene Ziffern auf einem Bild zu klassifizieren.
Rufen Sie Trainings- und Validierungsdaten aus der MNIST-Datenbank handgeschriebener Ziffern ab.
In[1]:=

resource = ResourceObject["MNIST"];
trainingData = ResourceData[resource, "TrainingData"];
testData = ResourceData[resource, "TestData"];
In[2]:=

RandomSample[trainingData, 5]
Out[2]=

Entwerfen Sie ein Convolutional Neural Net, das 28×28-Graustufenbilder erkennen kann.
In[3]:=

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"}]
]
Out[3]=

Trainieren Sie das Netz in drei Trainingsrunden.
In[4]:=

lenet = NetTrain[lenet, trainingData, ValidationSet -> testData,
MaxTrainingRounds -> 3];
Out[4]=

Evaluieren Sie das trainierte Netz direkt mit zufällig ausgewählten Bildern aus dem Validierungssatz.
In[5]:=

imgs = Keys @ RandomSample[testData, 5];
Thread[imgs -> lenet[imgs]]
Out[5]=
