Python/Keras - 为每个时期创建一个带有一个预测的回调
Python/Keras - Creating a callback with one prediction for each epoch
我正在使用 Keras 来预测时间序列。作为标准,我使用 20 个纪元。我想知道我的神经网络对 20 个时期中的每一个时期都预测了什么。
通过使用 model.predict 我在所有时期中只得到一个预测(不确定 Keras 如何 select 它)。我想要所有预测,或者至少是 10 个最好的预测。
根据我之前得到的答案,我应该通过子类化 Callback()
并在 on_epoch_end
函数内对模型调用预测来实现适当的回调,从而计算每个训练时期后的预测。
好吧,这个理论似乎已经成型,但我在编写代码时遇到了麻烦。谁能给出一个代码示例?
不确定如何实现 Callback()
子类化,也不知道如何将其与 on_epoch_end
函数中的 model.predict
混合。
非常感谢您的帮助:)
编辑
好吧,我进化了一点。
了解如何创建子类以及如何将其 link 到 model.predict。
但是,我正在为如何创建包含所有预测的列表而绞尽脑汁。以下是我当前的代码:
#Creating a Callback subclass that stores each epoch prediction
class prediction_history(Callback):
def on_epoch_end(self, epoch, logs={}):
self.predhis=(model.predict(predictor_train))
#Calling the subclass
predictions=prediction_history()
#Executing the model.fit of the neural network
model.fit(X=predictor_train, y=target_train, nb_epoch=2, batch_size=batch,validation_split=0.1,callbacks=[predictions])
#Printing the prediction history
print predictions.predhis
然而,我得到的只是最后一个纪元的预测列表(与打印 model.predict(predictor_train) 的效果相同)。
现在的问题是:我如何调整我的代码,以便它添加到 predhis
每个时代的预测中?
您正在覆盖每个时期的预测,这就是它不起作用的原因。我会这样做:
class prediction_history(Callback):
def __init__(self):
self.predhis = []
def on_epoch_end(self, epoch, logs={}):
self.predhis.append(model.predict(predictor_train))
这样 self.predhis 现在是一个列表,每个预测都会在每个 epoch 结束时附加到列表中。
我正在使用 Keras 来预测时间序列。作为标准,我使用 20 个纪元。我想知道我的神经网络对 20 个时期中的每一个时期都预测了什么。
通过使用 model.predict 我在所有时期中只得到一个预测(不确定 Keras 如何 select 它)。我想要所有预测,或者至少是 10 个最好的预测。
根据我之前得到的答案,我应该通过子类化 Callback()
并在 on_epoch_end
函数内对模型调用预测来实现适当的回调,从而计算每个训练时期后的预测。
好吧,这个理论似乎已经成型,但我在编写代码时遇到了麻烦。谁能给出一个代码示例?
不确定如何实现 Callback()
子类化,也不知道如何将其与 on_epoch_end
函数中的 model.predict
混合。
非常感谢您的帮助:)
编辑
好吧,我进化了一点。 了解如何创建子类以及如何将其 link 到 model.predict。 但是,我正在为如何创建包含所有预测的列表而绞尽脑汁。以下是我当前的代码:
#Creating a Callback subclass that stores each epoch prediction
class prediction_history(Callback):
def on_epoch_end(self, epoch, logs={}):
self.predhis=(model.predict(predictor_train))
#Calling the subclass
predictions=prediction_history()
#Executing the model.fit of the neural network
model.fit(X=predictor_train, y=target_train, nb_epoch=2, batch_size=batch,validation_split=0.1,callbacks=[predictions])
#Printing the prediction history
print predictions.predhis
然而,我得到的只是最后一个纪元的预测列表(与打印 model.predict(predictor_train) 的效果相同)。
现在的问题是:我如何调整我的代码,以便它添加到 predhis
每个时代的预测中?
您正在覆盖每个时期的预测,这就是它不起作用的原因。我会这样做:
class prediction_history(Callback):
def __init__(self):
self.predhis = []
def on_epoch_end(self, epoch, logs={}):
self.predhis.append(model.predict(predictor_train))
这样 self.predhis 现在是一个列表,每个预测都会在每个 epoch 结束时附加到列表中。