2017-01-10 41 views
1

私のKerasモデルはKerasリポジトリーのbabi_rnn exampleです。Kerasモデル/レイヤーの出力を取得する

データセットのモデルの出力(単語単位)を取得したいとします。

私が試した:

layer = model.layers[-1] # For the last layer 
    f = K.function([model.get_input(train=False)], [layer.get_output(train=False)]) 
    print(f([x])[0]) # your activation tensor 

を私はエラーを取得:

AttributeError: 'Sequential' object has no attribute 'get_input' 

どのように私は単に入力によって供給されている時にモデルやレイヤーの出力を得ることができますか? for x, y in zip(X,Y): print(x,y)モデルが実際にを何をやっているを見るために:私はやることができるように、私は

# I supply the X list and want to get the Y list. 

    Y = Model(X) # X and Y are both lists. Model.Layer[Index] can also be a use case. 

    # The responses are the set of label probabilities for each word in the vocabulary. 

を必要とする、ある

これは最も単純な使用例でしたが、実装するのは面倒です。

ご協力いただければ幸いです。ありがとう。

答えて

2

あなたは、単にYpredict機能は、内部で何をしようとするんどの_make_predict_function()を呼び出して取得するためにmodel.predictを使用することができます。

しかし、あなたのモデルは特定のタイプの入力を特定のタイプの出力にマッピングするように訓練されています。したがって、predict関数を使用している間にそれらを処理し、同じものを解釈する必要があります。この例では、この変換はvectorize_stories()で行われているので、何をしているのか理解してください。言葉はあなたがモデルを訓練した後に行う必要があるすべてを予測し得るため、この場合には

は次のとおりです。

Y_pred = model.predict([tX, tXq]) 
for pred in Y_pred: 
    print (vocab[pred.argmax()-1]) 

注再びtXベクトル化テストの話tXqであるベクトル化テストクエリとY_predは、あなたのベクトル化が予測されていますモデルによる答え。

+1

ありがとうございました。どのレイヤーの出力を一般的に取得するか説明できますか?私は試しましたが、質問に誤りがあります。ありがとう。 – Rafael

+1

レイヤーの入力と出力を取得するには、どのレイヤーに対しても 'model.layers [index] .input'' model.layers [index] .output'を使用できます。また、順次モデルの場合は、モデル全体の入力と出力に 'model.input'と' model.output'を使用できます。 – indraforyou

関連する問題