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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

730閲覧

画像認識プログラムが学習していない原因

koukiten

総合スコア6

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

機械学習

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/07/14 04:46

編集2020/07/14 07:23

手書き画像画像の数字の認識のプログラムを作っています。
しかし、損失が下がらず、認識率も低いまま収束してしまいます。
損失を見た感じ学習をしていない感じです。原因がわからないのでわかる方いましたらご指摘お願いいたします。

発生している問題

Train on 160 samples, validate on 40 samples Epoch 1/30 160/160 [==============================] - 3s 21ms/step - loss: 2.3505 - accuracy: 0.0875 - val_loss: 2.2978 - val_accuracy: 0.1500 Epoch 2/30 160/160 [==============================] - 0s 2ms/step - loss: 2.3065 - accuracy: 0.0875 - val_loss: 2.3016 - val_accuracy: 0.0500 Epoch 3/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2994 - accuracy: 0.1250 - val_loss: 2.3053 - val_accuracy: 0.0500 Epoch 4/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2917 - accuracy: 0.1250 - val_loss: 2.3207 - val_accuracy: 0.0500 Epoch 5/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2993 - accuracy: 0.1250 - val_loss: 2.3048 - val_accuracy: 0.0500 Epoch 6/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2917 - accuracy: 0.1250 - val_loss: 2.2992 - val_accuracy: 0.0500 Epoch 7/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2929 - accuracy: 0.1250 - val_loss: 2.2986 - val_accuracy: 0.0500 Epoch 8/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2885 - accuracy: 0.1250 - val_loss: 2.2991 - val_accuracy: 0.0500 Epoch 9/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2877 - accuracy: 0.1250 - val_loss: 2.3033 - val_accuracy: 0.0500 Epoch 10/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2881 - accuracy: 0.1250 - val_loss: 2.3010 - val_accuracy: 0.0500 Epoch 11/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2890 - accuracy: 0.1250 - val_loss: 2.3040 - val_accuracy: 0.0500 Epoch 12/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2867 - accuracy: 0.1250 - val_loss: 2.2970 - val_accuracy: 0.0500 Epoch 13/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2861 - accuracy: 0.1250 - val_loss: 2.2954 - val_accuracy: 0.0500 Epoch 14/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2862 - accuracy: 0.1250 - val_loss: 2.2940 - val_accuracy: 0.0500 Epoch 15/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2904 - accuracy: 0.1250 - val_loss: 2.2979 - val_accuracy: 0.0500 Epoch 16/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2841 - accuracy: 0.1250 - val_loss: 2.2940 - val_accuracy: 0.0500 Epoch 17/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2855 - accuracy: 0.1312 - val_loss: 2.2938 - val_accuracy: 0.1250 Epoch 18/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2862 - accuracy: 0.1250 - val_loss: 2.2936 - val_accuracy: 0.1250 Epoch 19/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2888 - accuracy: 0.1312 - val_loss: 2.2957 - val_accuracy: 0.1250 Epoch 20/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2861 - accuracy: 0.1312 - val_loss: 2.2975 - val_accuracy: 0.1250 Epoch 21/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2871 - accuracy: 0.1187 - val_loss: 2.2974 - val_accuracy: 0.0500 Epoch 22/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2859 - accuracy: 0.1250 - val_loss: 2.2949 - val_accuracy: 0.0500 Epoch 23/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2853 - accuracy: 0.1312 - val_loss: 2.2952 - val_accuracy: 0.0500 Epoch 24/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2856 - accuracy: 0.1063 - val_loss: 2.2953 - val_accuracy: 0.0500 Epoch 25/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2850 - accuracy: 0.0875 - val_loss: 2.2968 - val_accuracy: 0.0500 Epoch 26/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2849 - accuracy: 0.1250 - val_loss: 2.3000 - val_accuracy: 0.0500 Epoch 27/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2854 - accuracy: 0.1250 - val_loss: 2.2984 - val_accuracy: 0.0500 Epoch 28/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2855 - accuracy: 0.1375 - val_loss: 2.2958 - val_accuracy: 0.1250 Epoch 29/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2843 - accuracy: 0.1312 - val_loss: 2.2929 - val_accuracy: 0.1250 Epoch 30/30 160/160 [==============================] - 0s 2ms/step - loss: 2.2853 - accuracy: 0.1312 - val_loss: 2.2921 - val_accuracy: 0.1250

該当のソースコード

import numpy as np import matplotlib.pyplot as plt import glob,os from sklearn.model_selection import train_test_split import cv2 from keras.layers import Convolution2D, BatchNormalization, Activation, MaxPooling2D, Add, Dropout, Flatten, Dense from keras import optimizers from keras.utils import to_categorical from keras import models from keras import layers x=[] z=[] #画像フォルダのパスを指定 path=os.path.dirname(os.path.abspath('__file__')) in_size=(28,28) out_size=10 path_one = path +'/Dataset/one' path_two = path +'/Dataset/two' path_three= path +'/Dataset/three' path_four = path +'/Dataset/four' file_1=glob.glob(path_one +'/*.jpg') file_2=glob.glob(path_two +'/*.jpg') file_3=glob.glob(path_three +'/*.jpg') file_4=glob.glob(path_four +'/*.jpg') print(len(file_1)) print(len(file_2)) print(len(file_3)) print(len(file_4)) print(len(file_5)) print(len(file_6)) print(len(file_7)) print(len(file_8)) print(len(file_9)) print(len(file_0)) #出力 26 20 23 21 11 19 20 16 22 22 def load_dir_1(path,label): for i in file_1: img=cv2.imread(i) img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) img=cv2.resize(img,in_size) img=img/255.0 x.append(img) z.append(label) return [x,z] def load_dir_2(path,label): for i in file_2: img=cv2.imread(i) img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) img=cv2.resize(img,in_size) img=img/255.0 x.append(img) z.append(label) return [x,z] def load_dir_3(path,label): for i in file_3: img=cv2.imread(i) img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) img=cv2.resize(img,in_size) img=img/255.0 x.append(img) z.append(label) return [x,z] def load_dir_4(path,label): for i in file_4: img=cv2.imread(i) img=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) img=cv2.resize(img,in_size) img=img/255.0 x.append(img) z.append(label) return [x,z] load_dir_1(path_one,1) load_dir_2(path_two,2) load_dir_3(path_three,3) load_dir_4(path_four,4) x=np.array(x) z=np.array(z) import keras x_train,x_test,z_train,z_test=train_test_split(x,z,test_size=0.2) x_train=x_train.reshape(len(x_train),28,28,1).astype('float32') x_test=x_test.reshape(len(x_test),28,28,1).astype('float32') z_train=keras.utils.np_utils.to_categorical(z_train.astype('int32'),10) z_test=keras.utils.np_utils.to_categorical(z_test.astype('int32'),10) model=models.Sequential() model.add(layers.Conv2D(32,(3,3),activation='relu',input_shape=(28,28,1))) model.add(layers.MaxPooling2D((2,2))) model.add(layers.Conv2D(64,(3,3),activation='relu')) model.add(layers.MaxPooling2D(2,2)) model.add(Dropout(0.2)) model.add(layers.Conv2D(64,(3,3),activation='relu')) model.add(layers.Flatten()) model.add(layers.Dense(64,activation='relu')) model.add(layers.Dense(10,activation='softmax')) from keras import optimizers model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) history = model.fit(x_train, z_train, epochs=30, batch_size=32,validation_data=(x_test, z_test))

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

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

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

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

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

can110

2020/07/14 04:55

いくつか未定義の変数があるようです。エラーが発生せず動作するコードを提示ください。
koukiten

2020/07/14 05:07

修正しました
can110

2020/07/14 05:12

「NameError: name 'path_one_speckle' is not defined」にて動作しません。 質問に記載しているコードを「そのままコピペ」して実行してみてください(動作しますか?)
koukiten

2020/07/14 05:16

何度もすみません。 関数に入れるパスを間違えていたので直しました。
can110

2020/07/14 05:47

「x_train=x_train.reshape(len(x_train),28,28,1).astype('float32')」にて 「AttributeError: 'list' object has no attribute 'reshape'」が発生します。 質問に記載しているコードを「そのままコピペ」して実行してみてください(動作しますか?)
koukiten

2020/07/14 05:52

本当にすみません! リストを配列に変えるのを忘れてたので修正しました。
can110

2020/07/14 05:54

とりあえず、修正された質問に記載しているコードを「そのままコピペ」して実行してみてください。 動作しますか?
koukiten

2020/07/14 06:03

必要なライブラリのインポートを修正しました。 動作しました。
can110

2020/07/14 06:18

入力画像に問題がありそうなので、まずはoneからzeroまでの各ファイル数、len(file_1)~len(file_0)をprintした結果を提示ください。
koukiten

2020/07/14 06:37

文字数制限を超えたので5以降の数字の読み込みの関数を削除しました。
guest

回答1

0

ベストアンサー

このあたりの知識に乏しいので的確な原因は指摘できませんが、元画像データに問題があると思われます。
当方にて各数字の画像数10個、各数字の画像は全く同一のもの(「1」なら10個すべて同じカタチ「1」の画像)で動作させた結果です。
あたりまえですが、正解率は1.0に収束しています。

PrainText

1Train on 80 samples, validate on 20 samples 2Epoch 1/30 380/80 [==============================] - 0s 2ms/step - loss: 2.3166 - accuracy: 0.1000 - val_loss: 2.3035 - val_accuracy: 0.0500 4Epoch 2/30 580/80 [==============================] - 0s 411us/step - loss: 2.2934 - accuracy: 0.1125 - val_loss: 2.3140 - val_accuracy: 0.1500 6Epoch 3/30 780/80 [==============================] - 0s 412us/step - loss: 2.2740 - accuracy: 0.1250 - val_loss: 2.3295 - val_accuracy: 0.1500 8Epoch 4/30 980/80 [==============================] - 0s 387us/step - loss: 2.2501 - accuracy: 0.2000 - val_loss: 2.3635 - val_accuracy: 0.0500 10Epoch 5/30 1180/80 [==============================] - 0s 388us/step - loss: 2.2377 - accuracy: 0.1500 - val_loss: 2.4008 - val_accuracy: 0.0000e+00 12Epoch 6/30 1380/80 [==============================] - 0s 412us/step - loss: 2.2185 - accuracy: 0.1250 - val_loss: 2.3816 - val_accuracy: 0.0000e+00 14Epoch 7/30 1580/80 [==============================] - 0s 400us/step - loss: 2.1710 - accuracy: 0.1875 - val_loss: 2.3371 - val_accuracy: 0.1000 16Epoch 8/30 1780/80 [==============================] - 0s 400us/step - loss: 2.1129 - accuracy: 0.3875 - val_loss: 2.2777 - val_accuracy: 0.1500 18Epoch 9/30 1980/80 [==============================] - 0s 362us/step - loss: 2.0528 - accuracy: 0.5000 - val_loss: 2.2032 - val_accuracy: 0.2500 20Epoch 10/30 2180/80 [==============================] - 0s 387us/step - loss: 1.9785 - accuracy: 0.4125 - val_loss: 2.1106 - val_accuracy: 0.0500 22Epoch 11/30 2380/80 [==============================] - 0s 375us/step - loss: 1.8595 - accuracy: 0.4500 - val_loss: 1.9630 - val_accuracy: 0.2500 24Epoch 12/30 2580/80 [==============================] - 0s 350us/step - loss: 1.7170 - accuracy: 0.6000 - val_loss: 1.7560 - val_accuracy: 0.5000 26Epoch 13/30 2780/80 [==============================] - 0s 375us/step - loss: 1.5362 - accuracy: 0.7750 - val_loss: 1.4589 - val_accuracy: 1.0000 28Epoch 14/30 2980/80 [==============================] - 0s 375us/step - loss: 1.3673 - accuracy: 0.8625 - val_loss: 1.2133 - val_accuracy: 1.0000 30Epoch 15/30 3180/80 [==============================] - 0s 362us/step - loss: 1.1369 - accuracy: 0.8375 - val_loss: 0.9378 - val_accuracy: 1.0000 32Epoch 16/30 3380/80 [==============================] - 0s 363us/step - loss: 0.9292 - accuracy: 0.9125 - val_loss: 0.7440 - val_accuracy: 0.9000 34Epoch 17/30 3580/80 [==============================] - 0s 363us/step - loss: 0.7212 - accuracy: 0.9375 - val_loss: 0.5730 - val_accuracy: 1.0000 36Epoch 18/30 3780/80 [==============================] - 0s 363us/step - loss: 0.6000 - accuracy: 0.8875 - val_loss: 0.4320 - val_accuracy: 1.0000 38Epoch 19/30 3980/80 [==============================] - 0s 363us/step - loss: 0.4228 - accuracy: 0.9875 - val_loss: 0.3599 - val_accuracy: 0.9000 40Epoch 20/30 4180/80 [==============================] - 0s 363us/step - loss: 0.4129 - accuracy: 0.8625 - val_loss: 0.2648 - val_accuracy: 1.0000 42Epoch 21/30 4380/80 [==============================] - 0s 363us/step - loss: 0.3232 - accuracy: 0.9375 - val_loss: 0.2445 - val_accuracy: 0.9000 44Epoch 22/30 4580/80 [==============================] - 0s 375us/step - loss: 0.2665 - accuracy: 0.9375 - val_loss: 0.1590 - val_accuracy: 1.0000 46Epoch 23/30 4780/80 [==============================] - 0s 363us/step - loss: 0.2104 - accuracy: 0.9625 - val_loss: 0.1119 - val_accuracy: 1.0000 48Epoch 24/30 4980/80 [==============================] - 0s 375us/step - loss: 0.1193 - accuracy: 1.0000 - val_loss: 0.1258 - val_accuracy: 1.0000 50Epoch 25/30 5180/80 [==============================] - 0s 363us/step - loss: 0.1458 - accuracy: 0.9875 - val_loss: 0.0807 - val_accuracy: 1.0000 52Epoch 26/30 5380/80 [==============================] - 0s 350us/step - loss: 0.0805 - accuracy: 1.0000 - val_loss: 0.0575 - val_accuracy: 1.0000 54Epoch 27/30 5580/80 [==============================] - 0s 350us/step - loss: 0.0734 - accuracy: 1.0000 - val_loss: 0.0588 - val_accuracy: 1.0000 56Epoch 28/30 5780/80 [==============================] - 0s 338us/step - loss: 0.0585 - accuracy: 1.0000 - val_loss: 0.0338 - val_accuracy: 1.0000 58Epoch 29/30 5980/80 [==============================] - 0s 338us/step - loss: 0.0635 - accuracy: 1.0000 - val_loss: 0.0279 - val_accuracy: 1.0000 60Epoch 30/30 6180/80 [==============================] - 0s 350us/step - loss: 0.0384 - accuracy: 1.0000 - val_loss: 0.0375 - val_accuracy: 1.0000

投稿2020/07/14 07:09

can110

総合スコア38341

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

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

koukiten

2020/07/14 07:21

やはりそう考えるのが妥当ですよね。 画像の特徴量を見つけられていない感じがします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問