我是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。
我很高兴听到您关于在每个培训时期存储和可视化输出层的意见。
此致 赛义德。
答案 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