如何在预训练模型的每个conv2d层之后循环添加BatchNormalization

时间:2020-02-19 11:51:28

标签: keras deep-learning

我有一个来自keras的预训练模型(vgg16)。我正在尝试通过循环在每个conv2d之后添加BatchNormalization层。但是,似乎我不可能所有人都在一起。这是我的代码。

from keras.applications import VGG16
from keras.layers import BatchNormalization, Input
from keras.models import Model

input_tensor = Input(shape=(256, 256, 3))
pretrain = VGG16(weights="imagenet", include_top=False, input_tensor=input_tensor)

            model = pretrain.layers[0].input
            for i in range(len(pretrain.layers)):
                x = pretrain.layers[i].output
                if "conv" in pretrain.layers[i].name:
                    x = pretrain.layers[i].output
                    x = BatchNormalization(axis=-1)(x)

                model = Model(input=model.input, output=x)

请问您有什么建议吗?预先谢谢你

1 个答案:

答案 0 :(得分:0)

您应该通过从VGG复制图层并在需要的地方添加自己的图层来构建新模型。

现在的问题是转换层连接到批处理规范,但不连接任何东西。