Wolfram Language

Neuronale Netze

Out-of-Core-Bildklassifizierung

Trainieren Sie ein Netzwerk, um die Ziffern 1 und 2 zu unterscheiden und laden Sie nur kleine Batches von Bildern auf einmal von der Festplatte in Ihren Speicher.

Downloaden und entzippen Sie einige Bilder.

In[1]:=
Click for copyable input
zip = URLDownload["https://wolfr.am/ebyHmnkR", "characters12.zip"]; dir = CreateDirectory[]; ExtractArchive[First @ zip, dir] // Length
Out[1]=

Ermitteln Sie die Dateipfade der Bilder und die Klassen aus den Ordnernamen.

In[2]:=
Click for copyable input
loadFiles[dir_] := Map[File[#] -> FileNameTake[#, {-2}] &, FileNames["*.jpg", dir, Infinity]]; trainingData = loadFiles[FileNameJoin[{dir, "characters", "train"}]]; testData = loadFiles[FileNameJoin[{dir, "characters", "test"}]];

Die Trainingsdaten bestehen aus einer Regelliste von File-Objekten pro Klasse.

In[3]:=
Click for copyable input
RandomSample[trainingData, 3]
Out[3]=

Definieren Sie ein einfaches Netz.

In[4]:=
Click for copyable input
net = NetChain[ {FlattenLayer[], DotPlusLayer[2], SoftmaxLayer[]}, "Output" -> NetDecoder[{"Class", {"1", "2"}}], "Input" -> NetEncoder[{"Image", {28, 28}, "Grayscale"}] ]
Out[4]=

Trainieren Sie das Netz.

In[5]:=
Click for copyable input
trained = NetTrain[net, trainingData, ValidationSet -> testData, MaxTrainingRounds -> 600, BatchSize -> 64]
Out[6]=

Klassifizieren Sie Bilder direkt anhand der Dateipfade.

In[7]:=
Click for copyable input
ims = Keys@RandomSample[testData, 3] trained /@ ims
Out[7]=
Out[7]=

Oder testen Sie das Netz direkt mit einem Bild und ermitteln Sie die Wahrscheinlich, mit der es einer Klasse zugeordnet wird.

In[8]:=
Click for copyable input
trained[\!\(\* GraphicsBox[ TagBox[RasterBox[CompressedData[" 1:eJztVUtrGlEUNj6iiY9UySJIN125zUq6kEhEIg3oIqULlwlNQ0GmqIVqRCQG NZJV8Ee4yUbBXVYJ5Ff4A4yiece308859TBMHkwX3fVADtc7537nO8982Pmx 9U2r0WjiJqit7V/rsdh28vM7/PgixL/vCbtfPwk/d/d2Yx93dLh8/+dvehZf kclkAv3w8CD/ORqNoB8fH9ns/v4eejAYvIYjF3pOcnV1RYfr6+vxeIwDdLfb ZRu58RvS6/XkPPlMJPv9PpEE8s3NjRpAEqLE+KenpxsbG3q9fprkeNxoNObz eTIAshpAhElQCLxerx8eHmokmZubgzaZppWzWq2xWEwei0oJBAKEBoZLS0s4 2O12zUxOTk5gMxwO1QM2m83FxUW8NZvNYOVyuUQpjbVaDTcGgwGfkKK7uzs1 aNQksKdIc7lcu90WZ9VBoYknMsxpVyPUkxNJ6IaTDMzNzU1gZrNZ9YB4y50M hKenJ/6E7CWTSQAuLCxEIhHcqIxdDs5Qt7e30KANepSTYrHYaDRUQnHLKeaO RsYoCXjCi8ohIkHyuffAls/lcplaK5VK0U2r1VIDCATFHBF5XDqdTur8v02j KEUN5MvLy4ODg/39/ePjYxDT6XTURegu2CB2efneFvRnKBTCW61WSyBIIB0s Fgs0eok6Fsy52eTPOS6SQqGAVzabjTYGJojQ5ufn2QWNPNZIp9N5TgleuHZI kd/vZ3pra2ulUsnr9cqRM5kMDb5ekouLC0XpeRPiHjoYDGKKER2MBUE4Ojpa XV3F8+XlZXjxeDzn5+coWaVSCYfD5AL3itjl2YA9L5xEIoHYcaAdgqh9Pp8i Y7z6XiwHEcYyBB+YgSrWDoGvrKy43e5oNIoJAkMUGquegsU0pdPps7MzbjZF MrEfkHB5/hE+qIKwggPZwwXP2vN/Hxw78oCMORwOAKL01WqVvlIHonzoWLgW Z1MAcKC9uOsQjih1OFlSKsgRDTtpdk0ueFTJy3/5d/IbNwt7sQ== "], {{0, 28}, { 28, 0}}, {0, 255}, ColorFunction->RGBColor], BoxForm`ImageTag["Byte", ColorSpace -> "RGB", Interleaving -> True], Selectable->False], DefaultBaseStyle->"ImageGraphics", ImageSize->Automatic, ImageSizeRaw->{28, 28}, PlotRange->{{0, 28}, {0, 28}}]\), "Probabilities"]
Out[8]=

Verwandte Beispiele

en es fr ja ko pt-br ru zh