离开 Keras Model/Layer

Get Ouput Of A Keras Model/Layer

我的 Keras 模型是 Keras 存储库中的 babi_rnn example

我想获得模型在数据集上的输出(文字)。

我试过了:

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

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

如有任何帮助,我们将不胜感激。谢谢。

您可以简单地使用 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 是模型预测的矢量化答案。