【问题标题】:Can we create a recursive model in keras?我们可以在 keras 中创建递归模型吗?
【发布时间】:2021-09-07 04:09:20
【问题描述】:

我有模型要在 keras 中制作。一个模型的输出必须作为其他模型的输入。

输入 -> 说一批 64 X 64 图像 第一个模型输出 -> 三个输出,将批次的一些输入图像拆分为 32 X 32、64 X 32 和 64 X 16。

这些不同大小的图像中的每一个都将输入到三个不同的模型中,这些模型将进一步拆分它们。这将以递归方式持续六次。

看图更好理解:Click to see image

每个阶段有 6 个阶段,父模型有 3 个选择。 这样就形成了模型的三叉树结构。 每个模型都有自己的损失和优化器。

如何在训练期间实现这样的模型?我们应该使用递归吗? keras中是否允许以这种方式进行模型训练的递归?

【问题讨论】:

    标签: tensorflow machine-learning keras deep-learning computer-vision


    【解决方案1】:

    训练期间尺寸/数量会发生变化吗?或者你会定义设置并保持这样吗?如果您始终保持相同,但只是更改它以测试不同的模型设置,您可以轻松创建一个生成模型树的函数。例如

    def create_model(tree_depth):
        models = []
        for i in range(tree_depth):
            model = ... # might be nice to have a function for defining a single model
            models.append(model)
        top_level_inputs = tf.keras.layers.Input((64, 64))
        x = model[0](top_level_inputs) # using functional model format here
        # if you want different parts of the input to go to different models, you may struggle.
        # Look into strided_slice if necessary
        for mod in models:
            x = mod(x) # you will need to code the true tree structure here, rather than this one-level for loop
        total_model = tf.keras.models.Model(top_level_inputs, x)
        return total_model
    
    my_model = create_model(my_depth)
    

    如果您没有让每一层都获得相同大小的输入,最大的挑战将是自动化形状,并制作某种嵌套的 for 循环来处理递归/拆分。

    【讨论】:

    • 让我知道这是否有帮助,或者我是否遗漏了什么!
    • 谢谢它的帮助。
    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 2023-03-13
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    相关资源
    最近更新 更多