質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.60%

手書き文字識別の精度高上について

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,366

score 39

カタカナ15文字の画像データ3000文字を用いて機械学習を行っています。
精度は95%以上を目指しているのですが、92%以上上がりません。

テスト、訓練データの分割割合
降下法のパラメータ、降下法の種類
中間層の数、ノード数
を変えて最適化してみました。

精度を上げるために次のステップとして何をすべきかわからず、とまっている状況です。
何かアドバイスをいただけないでしょうか。

そのなかで、最も精度のよかったコードが以下です。

from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D
from keras.utils import np_utils
from sklearn.datasets import fetch_mldata
import keras
from keras.optimizers import RMSprop , Nadam
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt

data = data.astype('float32')
test = data[0:600,:,:,:].copy()
train = data[600:3000,:,:,:].copy()# すべてのデータをtest(20%) , train(80%)に分ける
t_test = label[0:600,:]# すべてのラベルデータをtest(20%) , train(80%)に分ける
t_train = label[600:3000,:]
x_train = train.reshape(2400,784)
x_test = test.reshape(600,784)

x_train = x_train.reshape(x_train.shape[0], 28, 28,1)
x_test = x_test.reshape(x_test.shape[0], 28, 28,1)

x_train /= 255
x_test /= 255

model = Sequential()

model.add(Conv2D(32, kernel_size=(3, 3),
                 activation='relu',
                 input_shape=(28,28,1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.2))
model.add(Flatten())
model.add(Dense(128, activation='relu'))

model.add(Dense(15, activation='softmax'))


# Learnig Processの設定
model.compile(loss='categorical_crossentropy',
              optimizer=Nadam(lr=0.001,beta_2=0.9),
              metrics=['accuracy'])

model.fit(x_train, t_train, epochs=100,validation_data=(x_test, t_test))

loss_and_metrics = model.evaluate(x_test, t_test, batch_size=128)
print(loss_and_metrics)
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Q71

    2019/01/11 12:22

    畳み込み層が1層しかないように思いますが、あってますか?そうであれば、特徴抽出が十分できていないと考えられます。
    また、分類も1層の様ですが、ここも増やしてみましたか?
    やったような事は書いてありますが、やった事は具体的に書きましょう。

    キャンセル

  • tiitoi

    2019/01/11 12:51 編集

    LeNet や AlexNet あたりを参考にモデルを作ってみるといいかもしれませんね。
    あとサンプル数 3000 で15クラスだと1クラスあたり200サンプルなので、Deep Learning にしては少ないと感じます。
    MNIST は CNN 使うと 99% いきますが、1クラスあたり5000枚程の全体で6万枚のデータ数があって実現できてる精度です。

    キャンセル

  • akihir

    2019/01/13 23:15

    畳み込み層数などもう一度最適化してみましたが、やはり精度は上がりませんでした。
    他の方がおっしゃられている通り、水増しを行ってみたいと思います

    キャンセル

回答 1

checkベストアンサー

+1

データ件数を増やしてみましょう(既存の画像にノイズを加えるなど)

https://products.sint.co.jp/aisia/blog/vol1-7

がっつりやるならカプセルNNとかは面白そうかも

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.60%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る