Wolfram言語

ニューラルネットワーク

分類性能を測定する

MNISTの手書き数字データベースで訓練した,数字識別器の正確さを測定する.

訓練データと検証データを取得する.

In[1]:=
Click for copyable input
resource = ResourceObject["MNIST"]; trainingData = ResourceData[resource, "TrainingData"]; testData = ResourceData[resource, "TestData"];
In[2]:=
Click for copyable input
RandomSample[trainingData, 5]
Out[2]=

入力として28x28のグレースケール画像を取る,たたみ込みニューラルネットワークを定義する.

In[3]:=
Click for copyable input
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]=

3回の訓練ラウンドでネットワークを訓練する.

In[4]:=
Click for copyable input
lenet = NetTrain[lenet, trainingData, ValidationSet -> testData, MaxTrainingRounds -> 3]
Out[4]=

検証集合から無作為に抽出された画像で直接,訓練されたネットワークを評価する.

In[5]:=
Click for copyable input
imgs = Keys @ RandomSample[testData, 5]; Thread[imgs -> lenet[imgs]]
Out[5]=

訓練されたネットワークと検証集合からClassifierMeasurementsオブジェクトを生成する.

In[6]:=
Click for copyable input
cm = ClassifierMeasurements[lenet, testData]
Out[6]=

検証集合でのネットワークの正確さを得る.

In[7]:=
Click for copyable input
cm["Accuracy"]
Out[7]=

誤って8と分類された3をリストする.

In[8]:=
Click for copyable input
cm[{"Examples", 3 -> 8}]
Out[8]=

検証集合に対するネットワーク予測の混同行列のプロットを得る.

In[9]:=
Click for copyable input
cm["ConfusionMatrixPlot"]
Out[9]=

関連する例

de en es fr ko pt-br ru zh