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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

3回答

220閲覧

ニューラルネットワークを使って画像分析をした際にモデルのトレーニングの精度が上がらない

ijuya_yika

総合スコア50

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2018/12/02 00:05

編集2018/12/02 00:08

前提・実現したいこと

当方機械学習初心者です。

ニューラルネットワークを使って画像分析をしたいのですが、モデルのトレーニングの際に精度が上がらないという問題に遭遇しております。

25x25pxの画像があり、それぞれのピクセルにおけるRGB値(よって特性の合計は25253=1875)がX_trainの列に格納されており、それに対応する画像の分類番号(1~30のどれか)がy_trainに格納されている状態です。

X_train.shape => (1000, 1875) y_train.shape => (1000,)

なにか根本的に間違いを犯しているのでしょうか?

発生している問題・エラーメッセージ

精度が上がらない

該当のソースコード

Python

1import numpy as np 2import pandas as pd 3import tensorflow as tf 4 5#データをロードする 6X_train = np.loadtxt(base_dir + "tr_ft.csv", delimiter=",")[: , 1:] 7X_test = np.loadtxt(base_dir + "tst_ft.csv", delimiter=",")[: , 1:] 8y_train = np.loadtxt(base_dir + "tr_lbl.csv", dtype=np.uint8, delimiter=",", skiprows=1)[: , -1] 9 10#モデルを作る 11model = tf.keras.models.Sequential([ 12 tf.keras.layers.Dense(3,activation=tf.nn.relu), 13 tf.keras.layers.Dense(31,activation=tf.nn.softmax) 14]) 15 16model.compile(optimizer="adam", 17 loss="sparse_categorical_crossentropy", 18 metrics=["accuracy"]) 19 20#モデルにフィットする 21model.fit(X_train, y_train, epochs=10000)

フィットした結果

イメージ説明

イメージ説明

試したこと

主にこのサイトを参考にしてます

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

あたっているかどうかはわかりませんが、箇条書きでツッコミ入れてみます。

  • ラベルが1~30なら出力層ユニット数は30にすべきでは。
  • denseでユニット数3のreluの中間層と出力層ではどうにもならないと思います。中間層を絞りすぎです。ユニット数はせめて50~200くらいは要るのでは。
  • 他の方が回答されている通り、画像ならCNNを使うのがベターですが、denseでやりたいのなら素性の次元は小さい方が性能が出しやすいはずです。モノクロ化して25*25=625にしてはどうでしょう。

とりあえず上の2つをなんとかすれば、過学習だろうけどfitはするでしょう。

投稿2018/12/02 01:59

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

他の方からご指摘があった通り畳み込みNNに必要な手順が抜けていた(フィスタ数やバッチサイズの設定、元画像のサイズの変更)のが原因だったのかと思います。このサイトに乗ってる手順をステップbyステップで実装した所無事トレーニング精度を上げることができました。

投稿2018/12/05 18:49

ijuya_yika

総合スコア50

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

実際にプログラムを動かしていませんが
収束している気がします。。。

まずは、ilisデータセットなどの一般的なデータセットで試してみてください。精度が上がっていくのが見えるはずです。ご存知かと思いますが、画像をニューラルネットで回すときは、畳み込みニューラルネットを使います。精度が上がらない最大の原因はここだと思います

投稿2018/12/02 01:44

yamato_user

総合スコア2321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問