deeplearningで学習したモデルを用いて、Teat評価をしたいと考えています。
Testは画像が二つのファイルにそれぞれ160枚入っています。
Yrue_labelには320の配列をつくり0,1のラベルを与えています。
しかし、prediction_resultでは画像が320枚入って0,1を判断するはずが配列数が288になってしまいます。
なぜこのような事態が起きるのでしょうか。
わかる方がいましたらよろしくお願いいたします。
以下にコードとエラーメッセージをを記載します
#コード抜粋
# Make mini-batch test data. test_generator = test_datagen.flow_from_directory(Test_data_dir, target_size=(224, 224), class_mode="categorical", batch_size=batch_size, shuffle=False, seed=None, save_to_dir=None, subset=None) # Prediction. prediction_results = model.predict_generator(test_generator, steps=nb_test_samples // batch_size, max_queue_size=1, workers=1, use_multiprocessing=False, verbose=1) print(prediction_results.shape) sample_lis = ["B", "D"] # 予測結果を書き出すcsvファイルに加えるため、ファイル名を取得する。 namepath = [] list_of_testdata = [] for sample_name in sample_lis: namepath = [os.path.basename(p) for p in glob.glob('./Databox/Test/'+str(sample_name)+'/*.tif', recursive=True) if os.path.isfile(p)] #フォルダの枚数 for i in range(160): #print(namepath[i]) list_of_testdata.append(namepath[i]) count_correct = 0 count_miss = 0 # Accuracy score "Not voting" True_label = np.array([0, 1]).repeat(160) max_values_lis = np.argmax(prediction_results, axis=1) print(True_label.shape) print(max_values_lis.shape) #print(max_values_lis) for i in range(nb_test_samples): if True_label[i] == max_values_lis[i]: count_correct += 1 else: #print("number",i) count_miss += 1 accuracy_score_not_voting = count_correct / nb_test_samples print("Accuracy score (not voting) :", accuracy_score_not_voting)
print(prediction_results.shape)=(288,2)
print(True_label.shape)=(320,)
print(max_values_lis.shape)=(288,)となります
#エラーコード
if True_label[i] == max_values_lis[i]: IndexError: index 288 is out of bounds for axis 0 with size 288
回答1件
あなたの回答
tips
プレビュー