カタカナ15文字の画像データ3000文字を用いて機械学習を行っています。
精度は95%以上を目指しているのですが、92%以上上がりません。
テスト、訓練データの分割割合
降下法のパラメータ、降下法の種類
中間層の数、ノード数
を変えて最適化してみました。
精度を上げるために次のステップとして何をすべきかわからず、とまっている状況です。
何かアドバイスをいただけないでしょうか。
そのなかで、最も精度のよかったコードが以下です。
python
1from keras.models import Sequential 2from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D 3from keras.utils import np_utils 4from sklearn.datasets import fetch_mldata 5import keras 6from keras.optimizers import RMSprop , Nadam 7import pandas as pd 8import numpy as np 9import matplotlib 10import matplotlib.pyplot as plt 11 12data = data.astype('float32') 13test = data[0:600,:,:,:].copy() 14train = data[600:3000,:,:,:].copy()# すべてのデータをtest(20%) , train(80%)に分ける 15t_test = label[0:600,:]# すべてのラベルデータをtest(20%) , train(80%)に分ける 16t_train = label[600:3000,:] 17x_train = train.reshape(2400,784) 18x_test = test.reshape(600,784) 19 20x_train = x_train.reshape(x_train.shape[0], 28, 28,1) 21x_test = x_test.reshape(x_test.shape[0], 28, 28,1) 22 23x_train /= 255 24x_test /= 255 25 26model = Sequential() 27 28model.add(Conv2D(32, kernel_size=(3, 3), 29 activation='relu', 30 input_shape=(28,28,1))) 31model.add(MaxPooling2D(pool_size=(2, 2))) 32model.add(Dropout(0.2)) 33model.add(Flatten()) 34model.add(Dense(128, activation='relu')) 35 36model.add(Dense(15, activation='softmax')) 37 38 39# Learnig Processの設定 40model.compile(loss='categorical_crossentropy', 41 optimizer=Nadam(lr=0.001,beta_2=0.9), 42 metrics=['accuracy']) 43 44model.fit(x_train, t_train, epochs=100,validation_data=(x_test, t_test)) 45 46loss_and_metrics = model.evaluate(x_test, t_test, batch_size=128) 47print(loss_and_metrics)
で、しつもんはなんでしょうか
すみません、、、。精度を上げるために、次にどのようなことをすべきかをご教示お願いできないでしょうか。パラメータの最適化など、どのサイトにも記載しているような単純なことは一通り行ってみました。
よろしくお願いします。
畳み込み層が1層しかないように思いますが、あってますか?そうであれば、特徴抽出が十分できていないと考えられます。
また、分類も1層の様ですが、ここも増やしてみましたか?
やったような事は書いてありますが、やった事は具体的に書きましょう。
LeNet や AlexNet あたりを参考にモデルを作ってみるといいかもしれませんね。
あとサンプル数 3000 で15クラスだと1クラスあたり200サンプルなので、Deep Learning にしては少ないと感じます。
MNIST は CNN 使うと 99% いきますが、1クラスあたり5000枚程の全体で6万枚のデータ数があって実現できてる精度です。
畳み込み層数などもう一度最適化してみましたが、やはり精度は上がりませんでした。
他の方がおっしゃられている通り、水増しを行ってみたいと思います
回答1件
あなたの回答
tips
プレビュー