2016-08-16 24 views
19

私はKeras(Repoの例からResnet50)に機能モデルを持っています。私はImageDataGeneratorflow_from_directoryのデータで訓練し、.h5ファイルに保存しました。私がmodel.predictと呼ぶとき、私はクラス確率の配列を得る。しかし私はそれらをクラスラベル(私の場合はフォルダ名)と関連づけたい。どうすれば入手できますか?私はmodel.predict_classesmodel.predict_probaを使用することができましたが、機能モデルではこれらの機能は使用できません。Keras機能モデルからクラスラベルを取得

答えて

7

更新:これは新しいKerasのバージョンではもはや有効ではありません。 Emilia Apostolovaの回答にあるようにargmax()を使用してください。

機能的APIモデルは、分類のためにクラス確率を返すpredict()関数を持っています。次に、probas_to_classes()ユーティリティー機能を使用して最も可能性の高いクラスを選択できます。例:

y_proba = model.predict(x) 
y_classes = keras.np_utils.probas_to_classes(y_proba) 

これは、シーケンシャルモデルのmodel.predict_classes(x)に相当します。

これは、機能的APIがpredict_classes()が意味をなさないより一般的な種類のタスクをサポートしているためです。

さらに詳しい情報:https://github.com/fchollet/keras/issues/2524

+2

現在、np.utils.py(https://github.com/fchollet/keras/blob/master/keras/utils/np_utils.pyを参照)のコードにはprobas_to_classesメソッドがありません。彼らはこれを他の機能に変えましたか?私を助けてください。 – noobalert

+1

私は@noobalertが述べたのと同じ問題があります、それは機能を持っていません。 –

+4

代わりに 'y_classes = y_proba.argmax(axis = -1)'を使用してください – Zach

12
y_prob = model.predict(x) 
y_classes = y_prob.argmax(axis=-1) 

としてはhereを示唆しました。

+1

これは私にオフセットを与えるが、私はすでにそれを理解する方法を持っていた...ラベル名を取得するにはどうすればよいですか? – Trejkaz

3

flow_from_directoryを使用する場合、問題は確率出力の解釈方法です。同様に、flow_from_directoryがワンホットベクトルを作成する方法として、確率出力とクラスラベルをどのようにマップするかは、これまでは知られていない。

我々は

generator= train_datagen.flow_from_directory("train", batch_size=batch_size) 
label_map = (generator.class_indices) 

を使用する場合label_map変数はこの

{'class_14': 5, 'class_10': 1, 'class_11': 2, 'class_12': 3, 'class_13': 4, 'class_2': 6, 'class_3': 7, 'class_1': 0, 'class_6': 10, 'class_7': 11, 'class_4': 8, 'class_5': 9, 'class_8': 12, 'class_9': 13} 
のような辞書である私たちは、出力として取得する予測ベクトルのインデックスにクラスラベルをマッピングした辞書を得ることができます

これから、確率スコアとクラス名の間に関係を導くことができます。

基本的に、このコードでこの辞書を作成できます。

from glob import glob 
class_names = glob("*") # Reads all the folders in which images are present 
class_names = sorted(class_names) # Sorting them 
name_id_map = dict(zip(class_names, range(len(class_names)))) 

上記コード中の変数name_id_mapもflow_from_directoryのclass_indices関数から得られたものと同じ辞書を含んでいます。

希望すると便利です。

関連する問題