【问题标题】:Keras: cannot access training images inside on_batch_end callbackKeras:无法访问 on_batch_end 回调中的训练图像
【发布时间】:2019-05-02 10:01:32
【问题描述】:

我正在使用带有 TensorFlow 后端的 Keras 训练 CNN,使用 imgaug 进行图像增强。

我也在使用 Tensorboard 来可视化训练进度和结果。

由于 imgaug 正在对输入图像应用(随机)转换,我想将(一些)增强图像发送到 Tensorboard,以便我可以可视化它们并验证一切是否正确(例如:检查是否我应用了太大的翻译,或者图像过于模糊)。

为此,我创建了一个自定义 Keras 回调,并尝试在 on_batch_end 方法中输入我的逻辑。我可以将图像发送到张量板,但找不到可以访问增强输入图像的位置。关于如何实现这一点的任何提示?

提前致谢

【问题讨论】:

    标签: python tensorflow keras tensorboard


    【解决方案1】:

    最好通过简单地从生成器中获取图像来进行外部训练。

    如果是普通的generator:

    for i in range(numberOfBatches):
        x,y = next(generator)
        #plot, print, etc. with the batches    
    

    如果是keras.utils.Sequence:

    for i in range(len(generator)):
        x,y = generator[i]
        #plot, print, etc. with the batches    
    

    【讨论】:

    • 感谢您的回复。事实上,我最终这样做只是为了验证增强是正确的。但是,我真的很希望能够获得用于训练的实际数据,因为这可以帮助调试更微妙的问题
    • 我不认为 Keras 提供了这个选项,除非你更改它的源代码......可能在某些时候fit_generator 方法会调用train_on_batch,并从生成器中获取批处理.此时你可以尝试编写自己的东西。
    • 谢谢,我最终改变了生成器本身,将字段添加到包含图像和我需要的所有数据的模型中。该模型由 keras 输入到训练回调中,以便固定 int
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    • 2019-01-20
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    相关资源
    最近更新 更多