ichou1のブログ

主に音声認識、時々、データ分析のことを書く

tensorflowメモ(手書き文字認識その4)

前回の続き。

精度を上げることを試みる。

tensorflowサンプル(「examples/tutorials/mnist/mnist_deep.py」)を参考にレイヤーを構成。

f:id:ichou1:20181224215851p:plain

"Fully connected layer 1"(上表のfc1)のdownsamplingはMNISTサンプルをもとに適当に設定。
「256」(=2 * 2 * 64)featuresから「96」featuresへ。
MNISTサンプルだと、「3136」(=7 * 7 * 64)featuresから「1024」featuresへ。

(参考)kerasのmodel.summary()によるモデル表示

f:id:ichou1:20190103095723p:plain

学習で更新されるパラメータ数の内訳

# conv2d_2 Layer
filter: 3row * 3col * 32channel * 64channel = 18432
bias  : 64

# dense_1 Layer
weight : 256row * 96col = 24576
bias   : 96col

以下のとおり設定して学習。

  • "probability of dropout"(上表のdropout)は「0.5」
  • エポックは「500」
  • オプティマイザは「tf.train.GradientDescentOptimizer」
  • 損失関数は「交差エントロピー誤差」

途中、畳み込み層のパラメータが「Nan」になってしまったが、最大で99%後半の精度が出た。

ラベル値と推測値が異なっていた画像を見てみる。

「5」とラベル付け、「4」と推測

f:id:ichou1:20181226105340p:plain

「8」とラベル付け、「9」と推測

f:id:ichou1:20181224225034p:plain