Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Keras中保存每个历元的预测数据_Python_Tensorflow_Keras - Fatal编程技术网

Python 如何在Keras中保存每个历元的预测数据

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

我一直试图在数据帧或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.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))