繁体   English   中英

如何设计 tf.keras 回调以保存每个批次和每个时期的 model 预测

[英]how to design tf.keras callback to save model predictions for each batch and each epoch

我想创建一个 tf.keras 回调来保存训练期间每个批次和每个时期的 model 预测

我已经尝试了以下回调,但是它给出了类似的错误

AttributeError: 'PredictionCallback' object has no attribute 'X_train'

我的代码是

class PredictionCallback(tf.keras.callbacks.Callback):    

  def on_epoch_end(self, epoch, logs={}):

    y_pred = self.model.predict(self.X_train)

    print('prediction: {} at epoch: {}'.format(y_pred, epoch))

    pd.DataFrame(y_pred).assign(epoch=epoch).to_csv('{}_{}.csv'.format(filename, epoch))

    cnn_model.fit(X_train, y_train,validation_data=[X_valid,y_valid],epochs=epochs,batch_size=batch_size,
               callbacks=[model_checkpoint,reduce_lr,csv_logger, early_stopping,PredictionCallback()],
               verbose=1)

我还尝试创建 keras 回调以在训练期间为每批次保存 model 预测和目标,但尚未成功。希望专家能帮助我。谢谢。

我试过了

class PredictionCallback(tf.keras.callbacks.Callback):    
  def on_epoch_end(self, epoch, logs={}):
    y_pred = self.model.predict(self.validation_data[0])
    print('prediction: {} at epoch: {}'.format(y_pred, epoch))
    pd.DataFrame(y_pred.reshape(200,80)).assign(epoch=epoch).to_csv('{}_{}.csv'.format('filename', epoch))
    np.savetxt('output.txt',y_pred.reshape(200,80))

但是它没有将结果保存在文件名中,为什么?

您好,您走在正确的轨道上。 您可以使用以下回调 function 通过 txt 文件存储它:

class PredictionCallback(tf.keras.callbacks.Callback): 
  def __init__(self, model, test_data):
    self.model = model
    self.test_data = test_data
    
  def on_epoch_end(self, epoch, logs={}):

    x,y = self.test_data
    y_pred = self.model.predict(x)

之后,您可以使用 tensorflow 的fit function 训练您的 model:


history = model.fit(x1, y1, batch_size=128, epochs=10,
                    callbacks= [PredictionCallback(model, [x2, y2] )])

在之前定义了您的架构之后:

model =.network()

这对我有用。 查看您是否也在正确的文件夹路径中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM