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

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

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

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

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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

Q&A

解決済

1回答

634閲覧

画像がうまく読み込めない

Sukenosuke0221

総合スコア10

深層学習

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

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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

0グッド

0クリップ

投稿2021/09/10 05:07

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

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/09/11 00:53 編集

Test_data_dirに入っているデータはいくつありますか? ここからgeneratorが作られ、generatorからpredictされ、print(prediction_results.shape)=(288,2)となっているのであれば、generatorの段階で既に288(本当は320であってほしいのに)のはずです。
guest

回答1

0

ベストアンサー

Yrue_labelには320の配列をつくり0,1のラベルを与えています。

しかし、prediction_resultでは画像が320枚入って0,1を判断するはずが配列数が288になってしまいます。

288 /320 = 0.9

どこかでx0.9になる処理をしていませんか?

投稿2021/09/11 00:55

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Sukenosuke0221

2021/09/13 03:28

batchsizeの数がおかしくprediction_resultsのstepsの値によってすべての画像が読み込めず0.9倍になっていました。ご回答ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問