Neural network 如何在Keras中将计算图包装到层中?

Neural network 如何在Keras中将计算图包装到层中?,neural-network,deep-learning,keras,Neural Network,Deep Learning,Keras,之前,我将自己的层块编写为函数,如下所示: def vgg_stack(...): def inner(x): x = layers.BatchNormalization()(x) x = layers.Conv2D(...)(x) x = layers.Conv2D(...)(x) x = layers.MaxPool2D(pool_size=(2,2)(x) x = layers.Dropout(0.

之前,我将自己的层块编写为函数,如下所示:

def vgg_stack(...):
    def inner(x):

        x = layers.BatchNormalization()(x)
        x = layers.Conv2D(...)(x)
        x = layers.Conv2D(...)(x)

        x = layers.MaxPool2D(pool_size=(2,2)(x)
        x = layers.Dropout(0.25)(x)
        ...

        return x
    return inner
从这些函数中,我能够以一致的方式构建图形,如

x1 = layers.Input(...)
x2 = layers.Input(...)

x1 = vgg_stack(...)(x1)
x2 = vgg_stack(...)(x2)

x = layers.concatenate([x1, x2])

x = final_MLP(...)(x)
以此类推,以同样的方式将keras层和我自己的功能结合起来

不幸的是,这种方法停留在层包装器上:这个构造函数只接受层,不接受函数。如果我把我的函数传递给它,它就会抱怨

AttributeError: 'function' object has no attribute 'built'
所以,我需要。但是假设我已经有了上面所写的函数。最简单的方法是将这样的函数包装到
层中