Keras中的回调函数可以在每个时期保存预测输出

时间:2017-10-05 14:00:39

标签: numpy tensorflow keras tensorboard

我是Keras的新手,我打算在每个时代存储我的网络输出。为此,我想使用Tensorbaord来观察其环境中的输出层。

class OutputObserver(Callback):
""""
callback to observe the output of the network
"""

    def on_train_begin(self, logs={}):
        self.epoch = []
        self.out_log = []

    def on_epoch_end(self, epoch, logs={}):
        self.epoch.append(epoch) 
        self.out_log.append(self.model.get_layer('Dense03/Output').output)

这会将输出张量存储到列表中。问题是我无法做到1.将其转换为Numpy数组,以便可以读取CSV,...文件,2。使用Tensorflow编写摘要(因为Keras没有此功能),然后分析输出在Tensorboard。

我很高兴听到您关于在每个培训时期存储和可视化输出层的意见。

此致 赛义德。

1 个答案:

答案 0 :(得分:2)

要为每个纪元保存输出图层,您需要将训练/验证数据传递给回调对象。我使用的回调如下,

class OutputObserver(Callback):
""""
callback to observe the output of the network
"""

def __init__(self, xy):
    self.out_log = []
    self.xy = xy

def on_epoch_end(self, epoch, logs={}):
    self.out_log.append(self.model.predict(self.xy.x_train, batch_size=p.bath_size))

其中xy.x_train是训练数据。

现在,out_log数组是一个numpy.ndarray的形状(epoch_number,data_number,prediction_length):

type(prediction_logs[0])
Out[62]: numpy.ndarray