2017-01-10 3 views
1

Модель My Keras - это babi_rnn example в репозитории Keras.Get Ouput Of 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' 

Как я могу просто получить выход модели или слоя на подпитывают вход?

То есть, мне нужно

# 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. 

Так что я мог бы сделать: for x, y in zip(X,Y): print(x,y) для просмотра что модель фактически делает.

Я думаю, что это должен был быть простейший вариант использования, но он выглядит сложным для реализации.

Любая помощь была бы принята с благодарностью. Благодарю.

ответ

2

Вы можете просто использовать model.predict, чтобы получить Y функция predict внутренний вызов _make_predict_function() который делает то, что вы пытаетесь сделать.

Но ваша модель обучается отображать определенный тип ввода на определенный тип вывода ... поэтому вам нужно позаботиться об этом при использовании функции 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