我目前正在使用Keras(TF后端)训练语音增强模型,并使用TensorBoard可视化指标等。
我想使用内置的音频仪表板沿途收听结果。
我正在使用fit_generator
和基于this的自定义Sequence
对大型数据集进行训练。该模型将吸收光谱图碎片,并返回相同形状的光谱图碎片。
我已经在this之后对TensorBoard回调进行了子类化(不同之处在于,我目前只用一批填充validation_data
以节省时间)。一切运行顺利,我可以在张量板上看到直方图,分布和图像。
这是我的自定义回调类:
class ExtendedTensorBoard(TensorBoard):
def __init__(self, data_generator, **kwargs):
super().__init__(**kwargs)
self.data_generator = data_generator
def on_epoch_end(self, epoch, logs=None):
# adds stuff to validation_data (NOTE only 1 batch)
s_noisy, s_true = None, None
# TODO loop over batches here
s_noisy, s_true = self.data_generator[0]
self.validation_data = [s_noisy, s_true, np.ones((self.batch_size)), 0]
# call parent's func
super().on_epoch_end(epoch, logs)
通过查看keras tensorboard callback's handling of images,我认为我应该获取预测的数据,进行必要的处理(就我而言,操纵形状,逆STFT等),然后使用音频摘要进行存储。
但是,我还没有弄清楚:
*我的self.validation_data
的预测时间/地点,以及如何获取其输出?
*如何在子类中声明摘要并使其与TensorBoard.set_model()
中声明的其他摘要“合并”?
*在子类中我还需要注意什么才能使其正常工作?
提前谢谢!