1

我的 Keras 模型是 Keras 存储库中的babi_rnn 示例

我想在数据集上获取模型的输出(以文字形式)。

我试过了:

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)查看模型实际在做什么

我认为这应该是最简单的用例,但是实现起来看起来很麻烦。

任何帮助将不胜感激。谢谢。

4

1 回答 1

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是模型的向量化预测答案。

于 2017-01-11T09:08:02.603 回答