Python 如何在Keras中保存每个历元的预测数据
我一直试图在数据帧或csv文件中获取每个历元,但我做不到 通过这段代码,我得到了每个历元的输出:Python 如何在Keras中保存每个历元的预测数据,python,tensorflow,keras,Python,Tensorflow,Keras,我一直试图在数据帧或csv文件中获取每个历元,但我做不到 通过这段代码,我得到了每个历元的输出: import tensorflow as tf import keras # define your custom callback for prediction class PredictionCallback(tf.keras.callbacks.Callback): def on_epoch_end(self, epoch, logs={}): y_pred = self
import tensorflow as tf
import keras
# define your custom callback for prediction
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))
# ...
autoencoder.fit(x_train,x_train,
epochs=100,
batch_size=35,
shuffle=True,
validation_data=(x_test, x_test),
callbacks=[PredictionCallback()])
我作为na输出获得的历元(我在这里仅复制了3个历元进行说明):
但是,我如何在数据帧或csv文件中获取这些信息,以便稍后使用d3在我的应用程序中可视化
我尝试了在keras文档中找到的方法:
from keras.callbacks import CSVLogger
csv_logger = CSVLogger("model_history_log.csv", append=True)
autoencoder.fit(x_train,x_train,
epochs=200,
batch_size=35,
shuffle=True,
validation_data=(x_test, x_test),
callbacks=[csv_logger])
但这并没有给出每个历元的预测,只是将历元的损失值保存在csv中。将保存内容放入回调函数中
filename='training'
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).assign(epoch=epoch).to_csv('{}_{}.csv'.format(filename, epoch))
扩展凯南的anwser 由于根据Tensorflow回调文档,validation_数据已被弃用,因此需要执行以下操作以实现目标:
类度量(回调):
定义初始值(自、值数据):
super()。\uuuu init\uuuuu()
self.validation\u data=val\u data
“剩下的是凯南的密码”
_epoch_end上的def(self、epoch、logs={}):
y\u pred=self.model.predict(self.validation\u数据[0])
打印('prediction:{}在历元:{}'。格式(y_pred,历元))
pd.DataFrame(y_pred).assign(epoch=epoch).to_csv('{}}{}.csv'.format(文件名,epoch))
此外,您可以使用模型的名称作为文件名。由于model.name变量是只读的,因此需要执行以下操作:
model.\u name='SOME\u name'
然后,在Metrics类中使用model.\u名称
filename='training'
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).assign(epoch=epoch).to_csv('{}_{}.csv'.format(filename, epoch))