Q&A
kerasにて画像の判別機を作成しております。
学習データの精度の偏りを見るためにクラスごとの精度をグラフ表示したいのですが、どのようにしたらいいでしょうか?
python
1# coding:utf-8 2 3import keras 4from keras.utils import np_utils 5from keras.layers.convolutional import Conv2D, MaxPooling2D 6from keras.models import Sequential 7from keras.layers.core import Dense, Dropout, Activation, Flatten 8from keras.preprocessing.image import array_to_img, img_to_array, list_pictures, load_img 9import numpy as np 10import pandas as pd 11from sklearn.model_selection import train_test_split 12import matplotlib.pyplot as plt 13from keras.preprocessing.image import ImageDataGenerator 14from keras.preprocessing import image 15 16 17 18#【学習データの読み込み】 19X = [] 20Y = []#category_name 21datagen = ImageDataGenerator(horizontal_flip=True) 22max_img_num = 10 23 24 25# a画像 26for picture in list_pictures('dir/pic/a'): 27 img = img_to_array(load_img(picture, target_size=(32,32))) 28 X.append(img) 29 Y.append(0) 30 31# b画像 32for picture in list_pictures('/dir/pic/b'): 33 img = img_to_array(load_img(picture, target_size=(32,32))) 34 X.append(img) 35 X.append(img2) 36 37 Y.append(1) 38 39# 画素値を0から1の範囲に変換 40X = X.astype('float32') 41X = X / 255.0 42 43# クラスの形式を変換 44Y = np_utils.to_categorical(Y, 1) 45 46# 学習用データとテストデータ 47X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2) 48 49# 【CNNを構築】 50model = Sequential() 51 52model.add(Conv2D(32, (3, 3), padding='same', 53 input_shape=X_train.shape[1:])) 54 55model.add(Activation('relu')) 56model.add(Conv2D(32, (3, 3))) 57model.add(Activation('relu')) 58model.add(MaxPooling2D(pool_size=(2, 2))) 59model.add(Dropout(0.25)) 60model.add(Conv2D(64, (3, 3), padding='same')) 61model.add(Activation('relu')) 62model.add(Conv2D(64, (3, 3))) 63model.add(Activation('relu')) 64model.add(MaxPooling2D(pool_size=(2, 2))) 65model.add(Dropout(0.25)) 66 67model.add(Flatten()) 68model.add(Dense(512)) 69model.add(Activation('relu')) 70model.add(Dropout(0.6)) 71model.add(Dense(2)) 72model.add(Activation('softmax')) 73 74# 【コンパイル】 75model.compile(loss='categorical_crossentropy',#損失関数 76 optimizer='adam',#最適化、オブジェクト 77 metrics=['accuracy'])#評価関数、正解率 78 79#【学習実行】 80history = model.fit(X_train, y_train, batch_size=64, epochs=1, 81 validation_data = (X_test, y_test), verbose = 1) 82 83 84score = model.evaluate(X_test, y_test, verbose = 1) 85print("正解", score[1], "loss", score[0]) 86 87#【学習をグラフ表示】 88%matplotlib inline 89plt.plot(history.history['acc']) 90plt.plot(history.history['val_acc']) 91plt.title('model accuracy') 92plt.legend(['train', 'test'], loc='upper left') 93plt.show() 94plt.plot(history.history['loss']) 95plt.plot(history.history['val_loss']) 96plt.title('model loss') 97plt.legend(['loss', 'val_loss'], loc='upper left') 98plt.show() 99
この場合aとbの画像に対しての精度を見たいです。
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2019/06/21 07:17