问:使用 Keras 训练期间提取模型输出的最佳方法

Fre*_*ert 5 python deep-learning keras

正如问题所说,我想在训练期间为每个输入数据提取模型输出。我认为在训练期间可以轻松提取前向传递的输出,因为它无论如何都是计算出来的,但无法找到一种有效的方法来做到这一点。

所以我正在寻找一种更有效的方法来执行以下操作:

for epoch in range(num_epochs):
    model.fit(x_tr, y_tr, batch_size=batch_size, epochs=1)
    y_pred = model.predict(x_tr, batch_size=batch_size)

    # now I use y_pred for something before starting the next epoch
    do_something_with_prediction(y_pred)
Run Code Online (Sandbox Code Playgroud)

自定义回调出现在我的脑海中,因为它们具有内置函数,可以在每个批次结束时调用。但据我所知,您只能访问损失/度量值,而不能访问最后一层的实际输出。

好吧,我认为必须有一种更有效的方法,因为输出是在每次向前-向后传递时计算的,我真的很想节省时间来再次计算整个训练数据的正向传递。

吕廷博*_*吕廷博 0

您可以在图形模式下以高性能执行类似的操作,

tf.py_function(do_something_with_prediction, [y_pred], [outputs_of_your_func])
Run Code Online (Sandbox Code Playgroud)