2017-05-17 20 views
1

現在、複数の入力と出力を持つKerasモデルを実装しています。入力と出力の数は同じです。Keras:各モデル出力の精度を取得する

私のコードの出力部分は次のようになります。

... 
for s in range(NUM_STREAMS): 
     x[s] = Dense3(x[s]) 
     logits.append(Softmax0(x[s])) 

model = Model(
    inputs=[inp_ele for inp_ele in inp], 
    outputs=[logit for logit in logits] 
) 
sgd = optimizers.SGD(lr=0.1) 
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy']) 

は、今私は、モデル内の各logit精度を取得したい:ダイナミック、マルチストリームモデルであると考えられるように、それはforループが含まれています。しかし、print(model.metrics_names)を適用することは、私に与えます(この例では3ストリームモデルである)以下:私はmodel.fit機能から履歴オブジェクトを取得しようとすると、それは私に

KeyError: [-1] #Instead of the -1, it is respectively and of the lower list-indecies 
を与え、今

['loss', 'activation_8_loss', 'activation_8_loss', 'activation_8_loss', 
'activation_8_acc', 'activation_8_acc', 'activation_8_acc'] 

以下の方法で精度を取得しようとしましたが、いずれも機能しませんでした。

print(history.history['activation_8_acc']) 
print(history.history['activation_8_acc'][-1]) 
print(history.history[-1]) 

個々の精度を取得するにはどうすればよいですか?可能であれば、このモデルの平均精度をどのように取得できますか?

答えて

1

私は、出力ラインprint(history.history)追加:

'activation_8_loss_3': [1.3723259580135345], 'loss': [4.1188646435737608], 'activation_8_loss_1': [1.3680831426382065], 'activation_8_loss_2': [1.37177708029747], 'activation_8_acc_1': [0.46729998335242273] ... 

print(model.metrics_names)は全体的な話を語っていないことが明らかになりました。

関連する問題